App stürzt ab.. Warum?

  • Antworten:8
Dominik Wendel
  • Forum-Beiträge: 5

20.11.2012, 21:00:56 via Website

Hi liebe Community!

Ich habe angefangen eine App zu schreiben, die Längenmaße umrechnet.

Dafür habe ich eine neue Activity erstellt, welche ein neues layout beinhaltet.

Aber wenn ich die App auf meinen Handy starte und die zweite Activity aufrufe, stürzt sie ab :-(

Code der main Activity:

1public class MainActivity extends Activity {
2
3 @Override
4 protected void onCreate(Bundle savedInstanceState) {
5 super.onCreate(savedInstanceState);
6 setContentView(R.layout.activity_main);
7
8 Button btn_umrechnen = (Button)findViewById(R.id.button1);
9
10 btn_umrechnen.setOnClickListener(new View.OnClickListener() {
11
12 @Override
13 public void onClick(View v) {
14 // TODO Auto-generated method stub
15
16 Intent openActivity = new Intent(MainActivity.this, Laengen_berechnen.class);
17 startActivity(openActivity);
18
19 }
20 });
21
22 }
23
24
25 public void laengen_auswahl_oeffnen(View view)
26 {
27
28
29 Intent in = new Intent(view.getContext(),Laengen_auswahl.class);
30 startActivity(in);
31
32 }
33
34 @Override
35 public boolean onCreateOptionsMenu(Menu menu) {
36 // Inflate the menu; this adds items to the action bar if it is present.
37 getMenuInflater().inflate(R.menu.activity_main, menu);
38 return true;
39 }
40
41}


Code der zwieten Activity:

1public class Laengen_berechnen extends Activity {
2
3 @Override
4 protected void onCreate(Bundle savedInstanceState) {
5 super.onCreate(savedInstanceState);
6 setContentView(R.layout.laengen_auswahl_layout);
7 }
8
9 public byte laenge_ausgewaehlt;
10
11 float zahl_mili_meter, zahl_centi_meter, zahl_deci_meter, zahl_meter, ergebnis;
12
13 public EditText feld_mili_meter = (EditText)findViewById(R.id.editText_milimeter);
14 public EditText feld_centi_meter = (EditText)findViewById(R.id.editTextcentimeter);
15 public EditText feld_deci_meter = (EditText)findViewById(R.id.editTextdecimeter);
16 public EditText feld_meter = (EditText)findViewById(R.id.editTextmeter);
17
18
19
20
21 public void laenge_meter(View view)
22 {
23 laenge_ausgewaehlt = 1;
24 }
25
26 public void laenge_cenit_meter(View view)
27 {
28 laenge_ausgewaehlt = 2;
29 }
30
31 public void laenge_deci_meter(View view)
32 {
33 laenge_ausgewaehlt = 3;
34 }
35
36 public void laenge_mili_meter(View view)
37 {
38 laenge_ausgewaehlt = 4;
39 }
40
41
42
43
44
45
46 public void umrechnen(View view)
47 {
48
49 if (laenge_ausgewaehlt == 1)
50 {
51
52 zahl_mili_meter = Float.parseFloat(feld_mili_meter.getText().toString());
53 zahl_centi_meter = Float.parseFloat(feld_centi_meter.getText().toString());
54 zahl_deci_meter = Float.parseFloat(feld_deci_meter.getText().toString());
55 zahl_meter = Float.parseFloat(feld_meter.getText().toString());
56
57 feld_mili_meter.setText(String.valueOf(zahl_mili_meter));
58 feld_centi_meter.setText(String.valueOf(zahl_mili_meter / 10));
59 feld_deci_meter.setText(String.valueOf(zahl_mili_meter / 100));
60 feld_meter.setText(String.valueOf(zahl_mili_meter / 1000));
61 }
62 }
63
64
65
66
67 @Override
68 public boolean onCreateOptionsMenu(Menu menu) {
69 // Inflate the menu; this adds items to the action bar if it is present.
70 getMenuInflater().inflate(R.menu.activity_laengen_berechnen, menu);
71 return true;
72 }
73
74}


Ich habe schon rausgefunden, dass der Fehler bei den Zeilen

1public EditText feld_mili_meter = (EditText)findViewById(R.id.editText_milimeter);
2 public EditText feld_centi_meter = (EditText)findViewById(R.id.editTextcentimeter);
3 public EditText feld_deci_meter = (EditText)findViewById(R.id.editTextdecimeter);
4 public EditText feld_meter = (EditText)findViewById(R.id.editTextmeter);

liegt, da die zweite Activity ohne diese Zeilen ganz normal gestartet wird!

Antworten
Maximilian O
  • Forum-Beiträge: 990

20.11.2012, 21:27:26 via App

Was sagt denn das Log?

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
Dominik Wendel
  • Forum-Beiträge: 5

20.11.2012, 21:39:05 via Website

Also ich programmiere mit Eclipse und da habe ich nur die Konsole und das LogCat...

Bei Konsole gibt es keine Fehlermeldungen...
Das LogCat schreibt:

11-20 20:35:12.817: D/dalvikvm(765): Not late-enabling CheckJNI (already on)
11-20 20:35:13.266: E/Trace(765): error opening trace file: No such file or directory (2)
11-20 20:35:13.266: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:13.266: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:13.266: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:13.646: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:13.646: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:14.146: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:14.146: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:14.156: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:14.166: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:14.216: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:14.216: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:14.236: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:14.266: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:14.266: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:14.266: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:14.266: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:14.266: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:14.266: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:14.286: D/gralloc_goldfish(765): Emulator without GPU emulation detected.
11-20 20:35:14.326: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:14.366: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:15.647: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:15.657: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:15.667: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:15.696: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:15.736: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:15.736: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:15.756: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:15.756: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:15.876: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:15.947: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:15.947: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:15.947: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:16.147: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:16.147: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:16.157: W/Trace(765): Unexpected value from nativeGetEnabledTags: 0
11-20 20:35:16.179: D/AndroidRuntime(765): Shutting down VM
11-20 20:35:16.179: W/dalvikvm(765): threadid=1: thread exiting with uncaught exception (group=0x40a70930)
11-20 20:35:16.237: E/AndroidRuntime(765): FATAL EXCEPTION: main
11-20 20:35:16.237: E/AndroidRuntime(765): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{de.TheKakaduKing.changeit/de.TheKakaduKing.changeit.Laengen_berechnen}: java.lang.NullPointerException

11-20 20:35:16.237: E/AndroidRuntime(765): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
11-20 20:35:16.237: E/AndroidRuntime(765): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
11-20 20:35:16.237: E/AndroidRuntime(765): at android.app.ActivityThread.access$600(ActivityThread.java:141)
11-20 20:35:16.237: E/AndroidRuntime(765): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
11-20 20:35:16.237: E/AndroidRuntime(765): at android.os.Handler.dispatchMessage(Handler.java:99)
11-20 20:35:16.237: E/AndroidRuntime(765): at android.os.Looper.loop(Looper.java:137)
11-20 20:35:16.237: E/AndroidRuntime(765): at android.app.ActivityThread.main(ActivityThread.java:5039)
11-20 20:35:16.237: E/AndroidRuntime(765): at java.lang.reflect.Method.invokeNative(Native Method)
11-20 20:35:16.237: E/AndroidRuntime(765): at java.lang.reflect.Method.invoke(Method.java:511)
11-20 20:35:16.237: E/AndroidRuntime(765): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
11-20 20:35:16.237: E/AndroidRuntime(765): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11-20 20:35:16.237: E/AndroidRuntime(765): at dalvik.system.NativeStart.main(Native Method)
11-20 20:35:16.237: E/AndroidRuntime(765): Caused by: java.lang.NullPointerException
11-20 20:35:16.237: E/AndroidRuntime(765): at android.app.Activity.findViewById(Activity.java:1839)
11-20 20:35:16.237: E/AndroidRuntime(765): at de.TheKakaduKing.changeit.Laengen_berechnen.<init>(Laengen_berechnen.java:27)
11-20 20:35:16.237: E/AndroidRuntime(765): at java.lang.Class.newInstanceImpl(Native Method)
11-20 20:35:16.237: E/AndroidRuntime(765): at java.lang.Class.newInstance(Class.java:1319)
11-20 20:35:16.237: E/AndroidRuntime(765): at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
11-20 20:35:16.237: E/AndroidRuntime(765): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
11-20 20:35:16.237: E/AndroidRuntime(765): ... 11 more

Antworten
Phil G.
  • Forum-Beiträge: 86

21.11.2012, 09:31:57 via Website

Wie sieht den das XML zum Layout aus ? (also 2te Activity)

wenn du die FindViews rausnimmst und dann geht es, kann ja nur etwas mit dem Layout nicht stimmen.

— geändert am 21.11.2012, 09:34:18

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

21.11.2012, 09:35:58 via Website

Es steht doch klipp und klar drin wo der Fehler ist:

111-20 20:35:16.237: E/AndroidRuntime(765): Caused by: java.lang.NullPointerException
211-20 20:35:16.237: E/AndroidRuntime(765): at android.app.Activity.findViewById(Activity.java:1839)
311-20 20:35:16.237: E/AndroidRuntime(765): at de.TheKakaduKing.changeit.Laengen_berechnen.<init>(Laengen_berechnen.java:27)

Du holst mit findViewById einen View in eine Klassenvariable (<init> Teil).
Das wird noch LANGE vor der onCreate Methode ausgeführt, also auch noch lange, bevor du mit setContentView überhaupt ein Layout geladen hast.

Variablen-Initialisierung gehört ins onCreate und nach setContentView!

— geändert am 21.11.2012, 09:36:57

Antworten
Dominik Wendel
  • Forum-Beiträge: 5

21.11.2012, 16:53:33 via Website

Hallo Phil

hier der Layout Code:

1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout xmlns:android=neue member können leider nichts verlinken :)
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:orientation="vertical" >
6
7 <EditText
8 android:id="@+id/editText_milimeter"
9 android:layout_width="match_parent"
10 android:layout_height="wrap_content"
11 android:ems="10"
12 android:inputType="numberDecimal"
13 android:onClick="laenge_mili_meter"
14 />
15
16
17 <EditText
18 android:id="@+id/editTextcentimeter"
19 android:layout_width="match_parent"
20 android:layout_height="wrap_content"
21 android:ems="10"
22 android:inputType="numberDecimal"
23 android:onClick="laenge_centi_meter" />
24
25 <EditText
26 android:id="@+id/editTextdecimeter"
27 android:layout_width="match_parent"
28 android:layout_height="wrap_content"
29 android:ems="10"
30 android:inputType="numberDecimal"
31 android:onClick="laenge_deci_meter" />
32
33 <EditText
34 android:id="@+id/editTextmeter"
35 android:layout_width="match_parent"
36 android:layout_height="wrap_content"
37 android:ems="10"
38 android:inputType="numberDecimal"
39 android:onClick="laenge_meter" />
40
41 <EditText
42 android:id="@+id/editText5"
43 android:layout_width="match_parent"
44 android:layout_height="wrap_content"
45 android:ems="10"
46 android:inputType="numberDecimal"
47 />
48
49 <EditText
50 android:id="@+id/editText6"
51 android:layout_width="match_parent"
52 android:layout_height="wrap_content"
53 android:ems="10"
54 android:inputType="numberDecimal" />
55
56 <Button
57 android:id="@+id/button1"
58 android:layout_width="match_parent"
59 android:layout_height="wrap_content"
60 android:text="@string/button_umrechnen"
61 android:onClick="umrechnen"
62 />
63
64</LinearLayout>

Antworten
Dominik Wendel
  • Forum-Beiträge: 5

21.11.2012, 17:05:18 via Website

@Rafael

wo sollte der Code denn dann stehen?

Antworten
Christian
  • Forum-Beiträge: 307

21.11.2012, 17:32:51 via Website

Hi Dominik,

ich vermute mal Rafael meint das hier:

1public class Laengen_berechnen extends Activity {
2
3 private byte laenge_ausgewaehlt;
4 private float zahl_mili_meter, zahl_centi_meter, zahl_deci_meter, zahl_meter, ergebnis;
5
6 private EditText feld_mili_meter;
7 private EditText feld_centi_meter;
8 private EditText feld_deci_meter;
9 private EditText feld_meter;
10 @Override
11 protected void onCreate(Bundle savedInstanceState) {
12 super.onCreate(savedInstanceState);
13 setContentView(R.layout.laengen_auswahl_layout);
14
15
16 feld_mili_meter = (EditText)findViewById(R.id.editText_milimeter);
17 feld_centi_meter = (EditText)findViewById(R.id.editTextcentimeter);
18 feld_deci_meter = (EditText)findViewById(R.id.editTextdecimeter);
19 feld_meter = (EditText)findViewById(R.id.editTextmeter);

20 }
21
22 //dein restlicher Code .........

mfg Christian

— geändert am 21.11.2012, 17:33:11

Dominik Wendel

Antworten
Dominik Wendel
  • Forum-Beiträge: 5

21.11.2012, 17:39:12 via Website

Danke Christian hat funktioniert :D

Echt gutes Forum hier :lol:

Antworten