TextView für zweites layout verändern Nullpointer

  • Antworten:3
  • Bentwortet
Bill Bob
  • Forum-Beiträge: 3

12.06.2014, 14:47:11 via Website

Hallo

Ich habe das Problem wenn ich aus einer Activity die auf ein Layout referenziert ist einen Wert im TextView in einem anderen Layout verändern möchte eine Nullpointer Exception bekomme. Hoffe dies ist verständlich
Hier mein Code:

MainActivity.java

public class MainActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final Button starten = (Button)findViewById(R.id.starte);
    final TextView ergebnis = (TextView) findViewById(R.id.ergebnis);
    Log.i("WaaSSSSaaP", "ergebnis:" + ergebnis); // null als ergebnis
    starten.setOnClickListener(new OnClickListener() {
           public void onClick(View v) {
                    ergebnis.setText("100"); // Nullpointer
                    Intent in = new Intent(MainActivity.this,SecondActivity.class);
                    startActivity(in);      
           }
    }
}
}

SecondActivity.java

public class SecondActivity extends Activity {
String ergebnis_string;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);        
    setContentView(R.layout.activity_second);
    final TextView ergebnis = (TextView) findViewById(R.id.ergebnis);
    ergebnis_string = ergebnis.getText().toString();
    .
    .
    .
}
}  

activity_second.xml:

<Button
    android:id="@+id/starte"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:text="LOS GEHTS!" />

activity_main:

<TextView
    android:id="@+id/ergebnis"
    android:layout_height="wrap_content"
    android:layout_width="50dp"
    android:text="250"
    />

Also auf Button click soll mir eine neue Activity geöffnet werden in der keine "250" mehr steht sondern eine "100"
Hoffe mir kann da jemand helfen.

Edit: Logcat als Nachtrag.
06-12 12:54:40.410: D/(4659): HostConnection::get() New Host Connection established 0xa2b60e8, tid 4659
06-12 12:54:43.874: D/AndroidRuntime(4659): Shutting down VM
06-12 12:54:43.874: W/dalvikvm(4659): threadid=1: thread exiting with uncaught exception (group=0xb60364f0)
06-12 12:54:43.874: E/AndroidRuntime(4659): FATAL EXCEPTION: main
06-12 12:54:43.874: E/AndroidRuntime(4659): java.lang.NullPointerException
06-12 12:54:43.874: E/AndroidRuntime(4659): at com.example.mathe.MainActivity$1$1.onClick(MainActivity.java:43)
06-12 12:54:43.874: E/AndroidRuntime(4659): at android.view.View.performClick(View.java:2485)
06-12 12:54:43.874: E/AndroidRuntime(4659): at android.view.View$PerformClick.run(View.java:9080)
06-12 12:54:43.874: E/AndroidRuntime(4659): at android.os.Handler.handleCallback(Handler.java:587)
06-12 12:54:43.874: E/AndroidRuntime(4659): at android.os.Handler.dispatchMessage(Handler.java:92)
06-12 12:54:43.874: E/AndroidRuntime(4659): at android.os.Looper.loop(Looper.java:130)
06-12 12:54:43.874: E/AndroidRuntime(4659): at android.app.ActivityThread.main(ActivityThread.java:3683)
06-12 12:54:43.874: E/AndroidRuntime(4659): at java.lang.reflect.Method.invokeNative(Native Method)
06-12 12:54:43.874: E/AndroidRuntime(4659): at java.lang.reflect.Method.invoke(Method.java:507)
06-12 12:54:43.874: E/AndroidRuntime(4659): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-12 12:54:43.874: E/AndroidRuntime(4659): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-12 12:54:43.874: E/AndroidRuntime(4659): at dalvik.system.NativeStart.main(Native Method)

Danke

— geändert am 12.06.2014, 14:56:56

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

12.06.2014, 14:50:25 via Website

Poste mal dein LogCat.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Fabian Simon
  • Forum-Beiträge: 359

12.06.2014, 14:53:32 via Website

Ich vermute die Variable ergebnis ist null ;)

bzw Noch was ...
wenn du im Activity mit setContentView ein Laxout setzt, kannst du auch nur auf die Elemente zugreifen die sich in dem gesetzten Layout befinden.
Das heißt :
Layout 1 hat element ergenis

Layout 2 hat dies nicht

wenn setContentView(Layout 2) kannst du nicht mit findViewById(R.id.ergbnis) auf Layout 1 zugreifen

— geändert am 12.06.2014, 14:56:39

Antworten
Bill Bob
  • Forum-Beiträge: 3

12.06.2014, 14:57:59 via Website

yo das ist ja grad mein problem gibts da eine möglichkeit?

hab mir das hier angeguckt (Google: Starting Another Activity android.) kann leider keine links schicken da ich neu angemeldet bin
Nur für mein Vorhaben geht das irgendwie nicht

— geändert am 12.06.2014, 15:02:11

Antworten