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

findViewById liefert immer null zurück

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Ikarisan, 22.03.2012.

  1. Ikarisan, 22.03.2012 #1
    Ikarisan

    Ikarisan Threadstarter Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    0
    Registriert seit:
    18.12.2011
    Hallo!

    Ich weiß, mein Problem ist ein altes Thema. Aber alle 1000 bei Google gefundenen Lösungen waren bei mir nicht anwendbar bzw. funktionieren nicht.

    Im Prinzip habe ich mir ein Layout in der main.xml erstellt und dort dann zwei TextViews, die ich in meiner Activity ändern möchte. Ein Zugriff auf die TextViews mit "findViewById" liefert mir aber immer null zurück :(

    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
    [...]
    
                    <TextView
                        android:id="@+id/longitude"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/txt_longitude" />
    
                    <TextView
                        android:id="@+id/latitude"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/txt_latitude" />
    
    [...]
    
    </LinearLayout>
    
    Und in meiner Activity sieht das dann so aus:

    Code:
    public class WIMAActivity extends Activity implements LocationListener {
    	private TextView latituteField;
    	private TextView longitudeField;
    	private LocationManager locationManager;
    	private String provider;
    
    	/** Called when the activity is first created. */
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		
    		latituteField = (TextView) findViewById(R.id.latitude);
    		longitudeField = (TextView) findViewById(R.id.longitude);
    
    [...]
    
                    if (latituteField == null) {
    			System.out.println("NULL Latitude");
    		}
                    if (longitudeField == null) {
    			System.out.println("NULL Latitude");
    		}
    
    [...]
    
    Und beide sind halt immer null :(
    Irgendwie komme ich mir gerade ziemlich blöd vor :(
    Wo mache ich denn da einen Fehler?

    Gruß
    Thorsten
     
  2. DieGoldeneMitte, 22.03.2012 #2
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    An sich sieht der Code gut aus.

    Aber:
    Liegt die Datei wirklich in "$PROJEKT/res/layout/main.xml"?
    Hast Du vielleicht ein "$PROJEKT/res/layout-land/main.xml" (oder ähnlich), das stattdessen geladen wird?
     
    Ikarisan und soma-web haben sich bedankt.
  3. soma-web, 22.03.2012 #3
    soma-web

    soma-web App-Anbieter (kostenpfl.)

    Beiträge:
    146
    Erhaltene Danke:
    18
    Registriert seit:
    06.07.2011
    Kopier mal bitte was du oben in deiner Activity als Import stehen hast. Evtl isses Android.R und nicht die R Datei deines Projekts!
    Und cleane auch mal dein Projekt. evtl ist ja auch eine xml Datei Fehlerhaft und er hat Probleme die R Datei zu bilden!
     
  4. Ikarisan, 22.03.2012 #4
    Ikarisan

    Ikarisan Threadstarter Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    0
    Registriert seit:
    18.12.2011
    Huhu!

    Also ein Clean habe ich schon gemacht. Hat nicht geholfen. :(

    Unter gen/de.test.wima gibt es eine aktuelle R.java Datei, die auch Einträge in Form von

    Code:
    public final class R {
        public static final class attr {
        }
        public static final class color {
            public static final int white=0x7f040000;
        }
        public static final class drawable {
            public static final int ic_launcher=0x7f020000;
        }
        public static final class id {
            public static final int latitude=0x7f06000d;
            public static final int longitude=0x7f06000b;
    [...]
    
    enthält.

    Meine Imports sehen so aus:

    Code:
    package de.test.wima;
    
    import android.app.Activity;
    import android.content.Context;
    import android.os.Bundle;
    import android.widget.TextView;
    import android.widget.Toast;
    import android.location.*;
    
    Wieso immer ich? :D
     
  5. Ikarisan, 22.03.2012 #5
    Ikarisan

    Ikarisan Threadstarter Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    0
    Registriert seit:
    18.12.2011
    WUUAAAAAAAAAAAAAAAAAAAAAAAAAA.........


    Mir ist jetzt gerade erst aufgefallen das ich ein layout-nokeys habe O.O
    Und dieses scheint wohl verwendet zu werden wenn ich die App starte. Klar das er da die IDs nicht finden kann.

    Kann mich aber nicht erinnern, dass ich zwei Layouts angelegt habe O.O
     
  6. soma-web, 23.03.2012 #6
    soma-web

    soma-web App-Anbieter (kostenpfl.)

    Beiträge:
    146
    Erhaltene Danke:
    18
    Registriert seit:
    06.07.2011
    Der Preis geht an: DieGoldeneMitte!!! ;)
     
  7. DieGoldeneMitte, 23.03.2012 #7
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Danke-Knopf drücken reicht :D
     

Diese Seite empfehlen