App stürzt ab - warum?

  • Antworten:18
  • Bentwortet
Tim
  • Forum-Beiträge: 9

21.10.2016, 18:20:41 via Website

Hallo Community,

ich bin ganz neu in der Android App Entwicklung. Ich benutze Android Studio und teste auf meinem Handy.

Meine erstes Test-Programm:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.RadioButton;
import android.widget.TextView;


public class Test extends AppCompatActivity {

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

    //hier ist das Problem
    TextView t = (TextView) findViewById(R.id.textView);
    public void onRadioButtonClicked(View view) {

        boolean checked = ((RadioButton) view).isChecked();


        switch (view.getId()) {
            case R.id.radioButton:
                if (checked)
                    t.setText("It´s done.");

        }

    }

}

Die App stürzt jedoch direkt nach dem öffnen wieder ab.
Wenn ich aber TextView t = (TextView) findViewById(R.id.textView);auskommentiere stürzt sie nicht ab.

Woran könnte das liegen?

Vielen Dank!

— geändert am 23.10.2016, 16:09:59

Antworten
Tim
  • Forum-Beiträge: 9

23.10.2016, 15:19:25 via Website

Vielen Dank!
Jetzt sagt er mir jedoch bei t.setText(), dass er t nicht kennt (cannot resolve symbol 't').
Wahrscheinlich gilt dir Variable nur in oncreate, aber wie kann ich sie dann unten benutzen?

— geändert am 23.10.2016, 15:23:20

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

23.10.2016, 15:48:39 via App

Wie sieht den dein Code aus?

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

Antworten
Tim
  • Forum-Beiträge: 9

23.10.2016, 16:07:51 via Website

Mittlerweile so:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.RadioButton;
import android.widget.TextView;

public class Test extends AppCompatActivity {


    TextView t;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        t = (TextView) findViewById(R.id.textView);
    }


    public void onRadioButtonClicked(View view) {

        boolean checked = ((RadioButton) view).isChecked();

        if (checked) {
            t.setText("test");
        }

    }

}

Ich habe jetzt t oben initialisiert und dann in oncreate deklariert. Jetzt wird t auch unten erkannt.
Es wird auch keine Fehlermeldung ausgegeben und die App läuft auf dem Handy. Allerdings wird der Text des TextView's nicht geändert, d.h. es passiert einfach nichts wenn der RadioButton geklickt wird...

— geändert am 23.10.2016, 16:09:37

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

23.10.2016, 16:40:59 via App

Ja du musst ein OnCklickListener definieren also Den RadioButton auch so definieren:
RadioButton rb =....
rb.SetCheckChangedListener(...).
Dann im Listener die andere Methode aufrufen und dann sollte es gehen

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

Antworten
Tim
  • Forum-Beiträge: 9

23.10.2016, 17:35:48 via Website

Ok, es funktioniert jetzt nachdem ich in der .xml ein onClick hinzugefügt habe. Wenn ich jetzt aber den Radio Button anklicke ändert sich der Text im TextView und das Layout wird verschoben, d.h. mehrere Items liegen übereinander. Was ist da los?

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

23.10.2016, 17:42:00 via Website

Das kann ich dir auf Anhieb nicht sagen, dazu bräuchte ich mal dein XML Layout.
Bitte gewöhne dir an das immer direkt mit zu posten.

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

Antworten
Tim
  • Forum-Beiträge: 9

23.10.2016, 19:20:55 via Website

Ok, werde ich mir merken ;-)

Ist eigentlich noch ziemlich Standard, ich mache im Moment nur eine kleine Test-Anwendung, um die Grundlagen zu Lernen.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android=""
    xmlns:tools=""
    android:id="@+id/activity_test"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.tim.test.Test">

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/radioButton5"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:onClick="onRadioButtonClicked" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click the button!"
        android:textSize="21sp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="113dp"
        android:id="@+id/textView" />

</RelativeLayout>

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

23.10.2016, 19:23:47 via App

Ich kann mir gerade nicht vorstellen was da passieren soll...
Hast du vlt. einen Screenshot?

— geändert am 23.10.2016, 19:23:53

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

Antworten
Tim
  • Forum-Beiträge: 9

23.10.2016, 22:11:11 via Website

Klar:
Davor:
image
Danach:
image

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

23.10.2016, 22:23:22 via Website

Kann ich mir gerade selbst nicht erklären.
Vermute da stimmt was mit dem Layout nicht...

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

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

24.10.2016, 00:12:18 via App

Das von dir gepostete Layout erzeugt doch nicht den von dir geposteten Screenshot oder?

Antworten
Tim
  • Forum-Beiträge: 9

24.10.2016, 13:39:16 via Website

Nein, ich habe die ganzen RadioButtons ohne Funktion rausgekürzt, hier nochmal das vollständige Layout:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android=""
    xmlns:tools=""
    android:id="@+id/activity_test"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.tim.test.Test">

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/radioButton5"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:onClick="onRadioButtonClicked" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/radioButton4"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/radioButton"
        android:layout_toStartOf="@+id/radioButton"
        android:layout_marginRight="22dp"
        android:layout_marginEnd="22dp" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/radioButton"
        android:layout_marginRight="21dp"
        android:layout_marginEnd="21dp"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/radioButton5"
        android:layout_toStartOf="@+id/radioButton5" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click all of these mystery buttons!"
        android:textSize="21sp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="113dp"
        android:id="@+id/textView" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/radioButton6"
        android:layout_alignLeft="@+id/radioButton4"
        android:layout_alignStart="@+id/radioButton4"
        android:id="@+id/radioButton7" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/radioButton7"
        android:layout_alignLeft="@+id/radioButton"
        android:layout_alignStart="@+id/radioButton"
        android:id="@+id/radioButton8" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/radioButton8"
        android:layout_alignLeft="@+id/radioButton5"
        android:layout_alignStart="@+id/radioButton5"
        android:id="@+id/radioButton9" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/radioButton10"
        android:layout_alignLeft="@+id/radioButton7"
        android:layout_alignStart="@+id/radioButton7"
        android:id="@+id/radioButton11" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/radioButton11"
        android:layout_alignLeft="@+id/radioButton8"
        android:layout_alignStart="@+id/radioButton8"
        android:id="@+id/radioButton12" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/radioButton12"
        android:layout_alignLeft="@+id/radioButton9"
        android:layout_alignStart="@+id/radioButton9"
        android:id="@+id/radioButton13" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/radioButton14"
        android:layout_alignLeft="@+id/radioButton11"
        android:layout_alignStart="@+id/radioButton11"
        android:id="@+id/radioButton15" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/radioButton15"
        android:layout_alignLeft="@+id/radioButton12"
        android:layout_alignStart="@+id/radioButton12"
        android:id="@+id/radioButton16" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/radioButton16"
        android:layout_alignLeft="@+id/radioButton13"
        android:layout_alignStart="@+id/radioButton13"
        android:id="@+id/radioButton17" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/radioButton19"
        android:layout_alignLeft="@+id/radioButton16"
        android:layout_alignStart="@+id/radioButton16"
        android:id="@+id/radioButton20" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/radioButton20"
        android:layout_alignLeft="@+id/radioButton17"
        android:layout_alignStart="@+id/radioButton17"
        android:id="@+id/radioButton21" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/radioButton23"
        android:layout_alignLeft="@+id/radioButton20"
        android:layout_alignStart="@+id/radioButton20"
        android:id="@+id/radioButton24" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/radioButton24"
        android:layout_alignLeft="@+id/radioButton21"
        android:layout_alignStart="@+id/radioButton21"
        android:id="@+id/radioButton25" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/radioButton19"
        android:layout_below="@+id/radioButton15"
        android:layout_alignLeft="@+id/radioButton15"
        android:layout_alignStart="@+id/radioButton15"
        android:layout_marginTop="10dp" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/radioButton23"
        android:layout_alignBaseline="@+id/radioButton18"
        android:layout_alignBottom="@+id/radioButton18"
        android:layout_alignLeft="@+id/radioButton19"
        android:layout_alignStart="@+id/radioButton19" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/radioButton2"
        android:layout_centerVertical="true"
        android:layout_alignLeft="@+id/radioButton19"
        android:layout_alignStart="@+id/radioButton19" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/radioButton26"
        android:layout_alignBaseline="@+id/radioButton22"
        android:layout_alignBottom="@+id/radioButton22"
        android:layout_alignLeft="@+id/radioButton20"
        android:layout_alignStart="@+id/radioButton20" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/radioButton3"
        android:layout_alignParentTop="true"
        android:layout_alignLeft="@+id/textView"
        android:layout_alignStart="@+id/textView"
        android:layout_marginLeft="14dp"
        android:layout_marginStart="14dp" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="13dp"
        android:id="@+id/radioButton6"
        android:layout_below="@+id/radioButton3"
        android:layout_alignLeft="@+id/radioButton3"
        android:layout_alignStart="@+id/radioButton3" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="14dp"
        android:id="@+id/radioButton10"
        android:layout_below="@+id/radioButton6"
        android:layout_alignLeft="@+id/radioButton6"
        android:layout_alignStart="@+id/radioButton6" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="14dp"
        android:id="@+id/radioButton14"
        android:layout_below="@+id/radioButton10"
        android:layout_alignLeft="@+id/radioButton10"
        android:layout_alignStart="@+id/radioButton10" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/radioButton18"
        android:layout_alignBaseline="@+id/radioButton19"
        android:layout_alignBottom="@+id/radioButton19"
        android:layout_alignLeft="@+id/radioButton14"
        android:layout_alignStart="@+id/radioButton14" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/radioButton22"
        android:layout_alignBaseline="@+id/radioButton2"
        android:layout_alignBottom="@+id/radioButton2"
        android:layout_alignLeft="@+id/radioButton18"
        android:layout_alignStart="@+id/radioButton18" />

    <RadioButton
        android:text="Click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/radioButton26"
        android:layout_alignLeft="@+id/radioButton21"
        android:layout_alignStart="@+id/radioButton21"
        android:id="@+id/radioButton27" />


</RelativeLayout>

Antworten
swa00
  • Forum-Beiträge: 3.704

24.10.2016, 13:58:25 via Website

Hallo Tim ,

um dein "triviales" Problem zu finden ... ( und dein @id/textView" ist in deinem Layout)
(An der Stelle : Bitte gewöhne dir direkt an, dass du eindeutige Namen vergibst - z.b. textview_time)

Dann das hier sagt eigentlich gar nichts

public void onRadioButtonClicked(View view) {

Das hast du nirgendwo verwendet oder einem Radio zugeordnet .
Du musst das schon so machen , wie dir oben Pascal beschrieben hat.

Reduziere auch mal dein Layout nur auf ein TextView und nur ein Radiobutton
und mache dieses erst mal lauffähig .

Step for Step

— geändert am 24.10.2016, 13:59:02

Liebe Grüße - Stefan
[ App - Entwicklung ]

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

24.10.2016, 14:01:51 via Website

Die Struktur ist extrem unübersichtlich findest du nicht?
Wie wäre es mit einem main vertical LinearLayout und darin befinden sich 6 horizontale LinearLayouts. Dann lassen sich Design Fehler auch leichter finden.

— geändert am 24.10.2016, 14:02:37

Antworten
Tim
  • Forum-Beiträge: 9

24.10.2016, 14:41:40 via Website

Das public void onRadioButtonClicked(View view) {hab ich aus den docs (developer.android.com).

Das SetCheckChangedListenerwird mir rot markiert (cannot resolve symbol).

Das Layout sieht jetzt so aus:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android=""
    xmlns:tools=""
    android:id="@+id/activity_test"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.tim.test.Test">


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Click all of these mystery buttons!"
            android:textSize="21sp"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="113dp"
            android:id="@+id/textView1" />

        <RadioButton
            android:text="Click"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/radioButton1"
            android:onClick="onRadioButtonClicked"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="42dp" />


</RelativeLayout>

und der Code so:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.RadioButton;
import android.widget.TextView;


public class Test extends AppCompatActivity {


    TextView t;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        t = (TextView) findViewById(R.id.textView1);
    }

    public void onRadioButtonClicked(View view) {

        boolean checked = ((RadioButton) view).isChecked();

        if (checked) {
            t.setText("Clicked.");
        }

    }

}

— geändert am 24.10.2016, 14:43:05

Antworten
swa00
  • Forum-Beiträge: 3.704

24.10.2016, 14:52:17 via Website

Tim - stop ....

Es ist uns bewusst , dass die Grundlagen fehlen und du eigentlich nicht weisst ,was du da tust und auch nicht verstehst.
Das von Pascal ist auch nicht der vollständige lauffähige Code , sondern nur ein Hinweis , wie du das Ganze umsetzen sollst. Programmieren ist zum größten Teil selbst recherchieren.

Lass erst mal das ganze Radio-Geraffel weg - konzentriere dich NUR auf dein Textview und teile uns mit ,
was dann passiert.

P.S Nochmal an der Stelle : vergib eindeutige Namen deinen Elementen im Layout .. wir müssen auch hier nachvollziehen , wo du was stehen hast ...

Du möchtest ja , dass wir dir helfen , also poste bitte nicht X-Mal dass Gleiche, sondern mache auch mal die Schritte , die wir dir empfehlen .

Sonst bekommst ganz schnell keine Antwort mehr , und das möchtest du ja nicht

Setze mal in OnCreate einen "Hallo" in den Textview

— geändert am 24.10.2016, 14:52:50

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Tim
  • Forum-Beiträge: 9

24.10.2016, 15:14:58 via Website

OK, Sorry. Ich werde versuchen das Problem selbst zu lösen.

Antworten