onClickListener mit mehreren Buttons ist nicht möglich

  • Antworten:26
  • OffenNicht stickyNicht beantwortet
Gelöschter Account
  • Forum-Beiträge: 13

10.06.2017, 11:25:49 via Website

Hallo Leute,

ich bin ein ziemlicher Anfänger in der Android Programmierung und habe Probleme mit dem onClickListener. Ich habe viele Buttons in meiner App und habe mir überlegt wie ich es am besten mache. Ich habe es also folgendermaßen getan:

    btn1 = (Button) findViewById(R.id.button1);
    btn1.setOnClickListener(this);
    btn2 = (Button) findViewById(R.id.button2);
    btn2.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    if(v == btn1) {
        setContentView(R.layout.layout_1);
    } else if(v == btn2) {
        setContentView(R.layout.activity_main);
    }
}

Sobald bei dieser Abfrage zwei oder mehr Buttons sind stürtzt die App beim Start ab. Bei einem Button funtkioniert sie aber. Wie kann ich dieses Problem beheben?

Mit freundlichen Grüßen

Lukas

— geändert am 10.06.2017, 11:27:28 durch Moderator

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.177

10.06.2017, 11:27:27 via App

Hallo Lukas!
Herzlich Willkommen hier bei uns im Forum. :)
Ich habe deinen Threadtitel mal angepasst.
Bitte achte beim nächsten Thread auf einen aussagekräftigeren Titel.
Danke :)



Wie sieht denn die Fehlermeldung im LogCat aus wenn du mehrere Buttons im onClick behandelst?

— geändert am 10.06.2017, 11:28:08

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

Antworten
Gelöschter Account
  • Forum-Beiträge: 13

10.06.2017, 13:00:47 via Website

Okay, mache ich das nächste Mal.

Wo genau finde ich den LogCat? (angel) (Bin absoluter Anfänger).

Antworten
Gelöschter Account
  • Forum-Beiträge: 13

10.06.2017, 13:04:46 via Website

Google hat meine Frage schon beantowrtet. (laughing)

Hier die Fehlermeldung aus dem LogCat:

FATAL EXCEPTION: main
Process: de.underlp.gutscheintuete, PID: 2013
java.lang.RuntimeException: Unable to start activity ComponentInfo{de.underlp.gutscheintuete/de.underlp.gutscheintuete.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at de.underlp.gutscheintuete.MainActivity.onCreate(MainActivity.java:34)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
at android.app.ActivityThread.access$800(ActivityThread.java:135) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5017) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
at dalvik.system.NativeStart.main(Native Method) 

Antworten
  • Forum-Beiträge: 35

10.06.2017, 13:29:43 via Website

Das funktioniert aber nur sauber wenn du den Button mit der Main Aktivität benutzt ,benutzt du die Activity die auf das Label_1 zeigt sollte es auch knallen .

Stichwort hier dürften Intents und wie wechsele ich eine Activity sein .

Das ist nicht schwer ,mach dir keine Sorgen habe beim ersten mal auch davor gesessen und es net so wirklich kapiert.

Antworten
Gelöschter Account
  • Forum-Beiträge: 13

10.06.2017, 13:41:43 via Website

Danke! Also was genau muss ich jetzt ändern? (angel)

Antworten
  • Forum-Beiträge: 35

10.06.2017, 13:47:18 via Website

Das musst du alleine herrausfinden ,da das Grundlagen sind ,ich habe Dir die Richtung gegeben . Wenn dir einer alles vorbetet lernst du es nicht, gib einfach Activity wechseln ein , es gibt bei Youtube unter anderem auch ein Video von mir ,da ist genau das beschrieben und geht nur 6 Minuten.

Es fehlt nämlich eine ganze Menge, wäre es jetzt nur ne Kleinigkeit gewesen hätte ich es dir fix berichtigt .

Liebe Grüße Daniel

Max

Antworten
Gelöschter Account
  • Forum-Beiträge: 13

10.06.2017, 14:09:41 via Website

Danke für eure Hilfe! :):D

Daniel Majunke

Antworten
  • Forum-Beiträge: 35

10.06.2017, 14:12:44 via Website

hast hinbekommen ?? Durfte leider noch keinen Link posten bin noch zu klein ;)

Antworten
Gelöschter Account
  • Forum-Beiträge: 13

10.06.2017, 14:20:34 via Website

Habe es wie in deinem Video befolgt, aber leider stürtzt die App beim Start immer noch ab. Es steht wieder das gleiche im LogCat wie vorher. :(

Antworten
Gelöschter Account
  • Forum-Beiträge: 13

10.06.2017, 14:23:12 via Website

Ja, habe ich.

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.177

10.06.2017, 14:29:17 via App

Wie sieht denn dein Xml und Code aus?

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

Antworten
Gelöschter Account
  • Forum-Beiträge: 13

10.06.2017, 14:35:39 via Website

MainActivity.java:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private static final String TAG = "MainActivity";

private AdView mAdView;

Button btnKFC;
Button btnBack1;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mAdView = (AdView) findViewById(R.id.adView);
    AdRequest adRequest = new AdRequest.Builder().build();
    mAdView.loadAd(adRequest);


    btnKFC = (Button) findViewById(R.id.buttonKFC);
    btnKFC.setOnClickListener(this);
    btnBack1 = (Button) findViewById(R.id.buttonBack1);
    btnBack1.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    if(v == btnKFC) {
        Intent intent = new Intent(MainActivity.this, KFC1.class);
        startActivity(intent);
    } else if(v == btnBack1) {
        setContentView(R.layout.activity_main);
    }
}

}

KFC1.java:

public class KFC1 extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_kfc);
}

}

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.177

10.06.2017, 14:37:16 via App

Die genaue Fehlermeldung wäre noch interessant ;)

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

Antworten
Gelöschter Account
  • Forum-Beiträge: 13

10.06.2017, 14:37:47 via Website

Genau die gleiche wie oben. :)

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.177

10.06.2017, 14:41:58 via App

Kann nicht sein du hast den Code verändert also tritt der Feher auch in einer anderen Code zeile auf.

Caused by: java.lang.NullPointerException 
at de.underlp.gutscheintuete.MainActivity.onCreate(MainActivity.java:34) 

Hier war es MainActivity.java Zeile 34..

Welche Zeile ist es diesmal?
Was steht in dieser (da wir keine Zeilennummern haben)

Einfacher: Du postest den neuen Error ;)

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

Antworten
Gelöschter Account
  • Forum-Beiträge: 13

10.06.2017, 14:43:52 via Website

                                                                      Caused by: java.lang.NullPointerException
                                                                         at de.underlp.gutscheintuete.MainActivity.onCreate(MainActivity.java:34)
                                                                         at android.app.Activity.performCreate(Activity.java:5231)
                                                                         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
                                                                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
                                                                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
                                                                         at android.app.ActivityThread.access$800(ActivityThread.java:135) 
                                                                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                                                                         at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                         at android.os.Looper.loop(Looper.java:136) 
                                                                         at android.app.ActivityThread.main(ActivityThread.java:5017) 
                                                                         at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                         at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
                                                                         at dalvik.system.NativeStart.main(Native Method) 

— geändert am 10.06.2017, 14:44:17

Antworten

Empfohlene Artikel