1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

[Gelöst] findViewById() funzt nicht - was mache ich falsch?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von maystorm, 12.04.2011.

  1. maystorm, 12.04.2011 #1
    maystorm

    maystorm Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    2
    Registriert seit:
    06.11.2010
    Hallo Leuts,

    ich zermartere mir seit Stunden den Kopf, warum bei mir die Methode findViewById() nicht funktioniert. Hier ein Beispiel, das einen Button in der main.xml definiert. Diesen Button will ich mit findViewById() referenzieren, bekomme aber immer null zurück (was ich mit einem Toast sichtbar mache):

    Code:
    // StartActivity.java
    
    package no.package_name;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.Button;
    import android.widget.Toast;
    
    public class StartActivity extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            final Button button = (Button) findViewById(R.id.a_normal_button);
            
            final String msg = (button == null ? "Button reference is null!" : "Button was found");
            final Toast toast = Toast.makeText(this, msg, Toast.LENGTH_LONG);
    
            toast.show();
        }
    }
    
    main.xml:
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    
        <TextView  
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:text="@string/hello"
        />
        
        <Button
            android:label="@+id/a_normal_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/button_text"
        />
    </LinearLayout>
    
    strings.xml:
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    
    <resources>
        <string name="hello">A test of the findViewById() method</string>
        <string name="app_name">FindViewByIdTest</string>
        <string name="button_text">I am a normal button!</string>
    </resources>
    
    Manifest.xml:
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="no.package_name"
          android:versionCode="1"
          android:versionName="1.0">
        <uses-sdk android:minSdkVersion="8" />
    
        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".StartActivity"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    
        </application>
    </manifest>
    
    Ich bitte um Erleuchtung, da ich absolut nicht weiß, was falsch sein soll. :sad:

    TIA!
     
    Zuletzt bearbeitet: 12.04.2011
  2. Neeldarax, 12.04.2011 #2
    Neeldarax

    Neeldarax Erfahrener Benutzer

    Beiträge:
    170
    Erhaltene Danke:
    31
    Registriert seit:
    07.12.2010
    Hallo maystorm,

    meines Wissens musst du die ID setzen

    android:label="@+id/a_normal_button"

    nicht das label ;)

    Sprich:
    android:id="@+id/a_normal_button"


    regards
     
  3. maystorm, 12.04.2011 #3
    maystorm

    maystorm Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    2
    Registriert seit:
    06.11.2010
    Au weia! :blink:

    Das war's, mein Dank ist dir auf ewig gewiss! :smile:
     
  4. m.harati, 17.10.2011 #4
    m.harati

    m.harati Neuer Benutzer

    Beiträge:
    3
    Erhaltene Danke:
    0
    Registriert seit:
    26.09.2011
    Hallo Neeldarax,
    ich hab' auch Problem mit findViewById, kannst mir bitte auch Rat geben?
    Meines ist anders. Ich möchte ein "Button" rufen, aber in das zweite ".java" file, nicht "main class".Und zwar habe das geschrieben:
    Code:
    [SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f][LEFT]mSendlevel_Button1 = (Button) findViewById(R.id.btn1);[/LEFT]
    [/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT][/SIZE]
    [/LEFT]

    Es gibt keinen Fehler in eclips, aber wenn ich es im Hnady ausführe, sagt:
    The application... has stopped unexpectedly.
    und spritzt raus.
    Das habe ich genau in my main class, da funktioniert aber hier endet das
    Programm. Das Problem liegt an findViewById. Gibt es andere Methode, ein Button zu rufen (call)?
    Hast du irgend welche Idee?
    Danke
     
  5. Neeldarax, 17.10.2011 #5
    Neeldarax

    Neeldarax Erfahrener Benutzer

    Beiträge:
    170
    Erhaltene Danke:
    31
    Registriert seit:
    07.12.2010
    hi m.harati,

    es wäre hilfreich einen neuen Thread zu machen, da dieser als gelöst markiert ist. Und dazu kannst am besten Informationen wie Logcat, XML-Datei und wie deine Java-Klassen zueinander stehen.

    regards
     
  6. m.harati, 17.10.2011 #6
    m.harati

    m.harati Neuer Benutzer

    Beiträge:
    3
    Erhaltene Danke:
    0
    Registriert seit:
    26.09.2011
    Es liegt schon in einem Thread. Egentlicht hat mein Program zwei classes und jede hat einenThread. Kann man in einem Thread noch einen definieren? Als eine Method? oder?
    Danke nochmals
     

Diese Seite empfehlen