Intent cannot be resolved to a type

Z Eclipsom delam eno simpl Android aplikacijo. Zaenkrat se šele spoznavam z javo, in stvari kot updejtanje text fieldov, funkcije, itd - mi delujejo pravilno. Zatakne se, ko probam delat fensi stvari, recimo menu iz katerega bi uporabnik izbral neko sliko iz telefona.

Neglede na to, kakšen intent probam dat noter, mi javi Intent cannot be resolved to a type. Sem porabil par ur z Googlanjem, pa mi nobena rešitev zaenkrat ne dela.

Celotna koda:

package com.blabla.mytestapp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.content.Intent;
import android.view.View;

public class MainActivity extends Activity {

    public String nekafunkcija() {
        String nekavariabla = "to je nekavariabla";
        return nekavariabla;
    }

    public void sendMessage(View view) {
        // Do something in response to button
        **Intent intent = new Intent(this, DisplayMessageActivity.class);**
    }

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        TextView text = new TextView(this);
        text.setText("Hello World, Android - mkyong.com");
        setContentView(text);
    }
}

Problematična linija je boldana. Reče da 'DisplayMessageActivity cannot be resolved to a type.' Ne pomaga niti, če DisplayMessageActivity spremenim v MainActivity (zaenkrat še ne vem, kaj točno delam, in več ali manj ugibam v temi).

Kje bi lahko bil problem?

5 odgovorov

si definiral DisplayMessageActivity v AndroidManifest.xml?

Če se ne motim, delaš po http://developer.android.com/training/basics/firstapp/starting-activity.html. Slediš vsem korakom?

Ja, delam po tem tutorialu.

Sem namestil kodo pod AndroidManifest.xml, ampak ni pomagalo. Manifest zdaj zgleda takole:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.blabla.mytestapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />
    <uses-feature />
    <library />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.blabla.mytestapp.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
        android:name="com.blabla.mytestapp.DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.blabla.mytestapp.MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.blabla.mytestapp.MainActivity" />
       </activity>
         <activity android:name=".Must" />
    </application>
</manifest>

Poleg 'intent cannot be resolved to a type' errorja, mi za isto linijo piše tudi 'No enclosing instance of the type Activity is accessible in scope'. Delam pod Linuxi.

Poskusil sem tudi importat en tutorial projekt ki ima opravka s temi meniji, in mi tudi tam javlja eno tono errorjev. Kaj bi lahko bilo narobe?

OK, napredujem. Sem šel še nekaj korakov naprej, in intent error je izginil. Zdaj imam pa nov problem:

/** Called when the user clicks the Send button */
    public void sendMessage(View view) {
        Intent intent = new Intent(this, DisplayMessageActivity.class);
      **EditText editText = (EditText) findViewById(R.id.edit_message);**
        String message = editText.getText().toString();
        intent.putExtra(EXTRA_MESSAGE, message);
        startActivity(intent);
    }

Pri označeni liniji mi jamra da 'R cannot be resolved to a variable'. Sem googlal problem, in pravijo, da znotraj 'gen' folderja ne sme bit uppercase letterjev, in da naj bi to pozročilo, da se R.java izbriše. No, jaz imam recimo v tem folderju tudi BuildConfig.java. Sem probam preimenovat v buildconfig.java, nič. Hecno je, da če potem dam clean project, da mi izbriše buildconfig.java, in se stari BuildConfig.java vrne nazaj. O R.java pa ne duha, ne sluha.

Hecne zadeve... se komu kaj sanja kje je fora?

R.java se samostojno generira... edit_message je id nekega element v .xml datoteki. Če gledam tvoj primer, nimaš določeno. Več o tem na

http://developer.android.com/guide/topics/ui/declaring-layout.html

Po treh razbitih tipkovnicah in pogriženi miški kasneje:

Uspelo mi je ugotovit, da se R.java ne uspe zgenerirat, če imaš kjerkoli v skripti kakšne errorje. Zdaj, ko sem vsakega posameznega nekako uspel spucat, se je rešilo.

Potem pa, jasno, se kljub vsemu niso uspeli prikazovat buttoni, ko sem zagnal aplikacijo, čeprav sem jih v Eclipsu lahko videl. To sem rešil takole, da sem skripto prisilil, da ob zagonu fokusira točno določeno stvar:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

Kakopak o tem v tutorialu ni bilo ne duha ne sluha.

Ampak ok. Imam še 10 tipkovnic v omari, tako da keep em coming. :)

Pa thanks za pomoč. Upam, da mi bo zdaj vse štimalo.