App crasht bei Änderung des Texts in einem ToggleButton

  • Antworten:6
Markus M.
  • Forum-Beiträge: 16

12.07.2015, 19:21:54 via Website

Hallo Leute,

ich sitze an einer App und die App crasht jedes mal wenn ich einen Button drücke.
Der Teil des Codes in dem der Fehler zu sein scheint, ist der hier:

 Button button = (Button) findViewById(R.id.button1);

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            {
                ToggleButton tg1  = (ToggleButton) findViewById(R.id.toggleButton);                                                                                                            Random r1 = new Random();
                int st1 = r1.nextInt(67 - 1) + 1;
                if (st1==1)
                    tg1.setTextOff("neuer Text");

Ich hab natürlich für die anderen Zahlen andere Texte,aber bei jedem Crash zeigt mir die Logcat den Teil des Codes an, der für die Zahl zuständig war,deshalb nur der Ausschnitt.

Hab schon vieles ausprobiert oder irgendwie probiert anders zu machen, aber komme nicht auf die Lösung.
Hier vielleicht nochmal der Logcat-Ausschnitt:

07-12 19:15:40.703 11031-11031/com.xxxxxxx.xxxxxxxxxx E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.xxxxx.xxxxxxxx, PID: 11031
java.lang.NullPointerException
at com.xxxxxxxx.xxxxxxxxxxx.MainActivity$2.onClick(MainActivity.java:218)
at android.view.View.performClick(View.java:4456)
at android.view.View$PerformClick.run(View.java:18482)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5097)
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:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)

Ich wäre für jeden Vorschlag dankbar!!

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

12.07.2015, 20:02:21 via App

Du musst den ToggleButton in der OnClick nicht mehr suchen sondern die obere Instanz benutzen.

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

Antworten
Markus M.
  • Forum-Beiträge: 16

12.07.2015, 20:39:08 via Website

Pascal P.

Du musst den ToggleButton in der OnClick nicht mehr suchen sondern die obere Instanz benutzen.

Ich habs mal ausprobiert aber leider funktioniert das auch nicht!

So hab ich's gemacht, hoffe Ich hab dich richtig verstanden.
So bekomme ich nämlich den gleichen Fehler wie vorher.

Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        {
            Random r1 = new Random();
            int st1 = r1.nextInt(67 - 1) + 1;
            if (st1==1)
                toggleButton.setTextOff("neuer Text");

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

12.07.2015, 20:53:48 via App

Gibt es denn den Button auf dem passenden Layout? Kann sein dass er die View nicht findet und daduch NPE.
Aber am einfachsten ist es den Debugger zu benutzen und Breakpoints setzen

— geändert am 12.07.2015, 20:54:04

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

Antworten
Sven R.
  • Forum-Beiträge: 1.904

12.07.2015, 21:18:26 via App

Hast du wirklich vorher sowas wie

tButton = (...) findViewById(...)

gemacht?

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
Markus M.
  • Forum-Beiträge: 16

12.07.2015, 22:47:47 via Website

Sven R.

Hast du wirklich vorher sowas wie

tButton = (...) findViewById(...)

gemacht?

Ja, aktuell sieht's so aus,aber funktioniert auch nicht.

public void Start(){

    ToggleButton tg1 = (ToggleButton)findViewById(R.id.toggleButton);

    tg1.setTextOff("jojojoj");

Gleicher Fehler wie vorher auch, leider.

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.957

12.07.2015, 23:44:16 via Website

Hallo Markus,

schau doch mal nach ob der ToggleButton mit der id toggleButton wirklich im Layout ist, so wie dich Pascal schon gefragt hat.

Oder poste aus der MainActivity die Zeile 218, welche diese Ergebnis liefert ToggleButton tg1 = (ToggleButton)findViewById(R.id.toggleButton);
Richtig?

Und zu deine public void Start(){} wo wird die denn aufgerufen?

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

Lebensmittelwarnung-App

✨Meine Wunschliste✨

📲Telegram NextPit News📲

Antworten