Benötige Hilfe bei der Fehlsersuche um ProgressBar erscheinen und verschwinden zu lassen

  • Antworten:8
Yorrick R.
  • Forum-Beiträge: 60

04.11.2011, 11:12:58 via Website

Hallo Leute.

Ich benötige Hilfe um in meinem Programm eine ProgressBar auf Knopfdruck erscheinen und bei einem erneuten Knopfdruck verschwinden zu lassen. Später soll beim anklicken eine Datenbank aktualisiert werden und die ProgressBar von selbst wieder verschwinden aber das ist ja erstmal egal.

Ich bin jetzt mit dem Eclipse-Debugger durch, und konnte es inzwischen soweit einschränken, dass es wohl schon im ersten auskommentierten Bereich zu dem Fehler kommt.

Hier mal der Code, wenn etwas fehlt, bitte sagen:
1package com.yorrickr.dashboard;
2
3import android.app.Activity;
4import android.content.Context;
5import android.content.Intent;
6import android.os.Bundle;
7import android.util.Log;
8import android.view.View;
9import android.view.ViewGroup.LayoutParams;
10import android.widget.Button;
11import android.widget.FrameLayout;
12
13
14public class StundenplanAuswahl extends Activity {
15
16 /*private boolean klick = false;
17
18 final LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
19
20 private static final String TAG = StundenplanAuswahl.class.getSimpleName();
21 String name = "android.widget.ProgressBar";
22 final FrameLayout f = (FrameLayout) findViewById(R.id.frame1);
23 final Button b = (Button) findViewById(R.id.button1); */
24
25 @Override
26 public void onCreate(Bundle savedInstanceState) {
27 super.onCreate(savedInstanceState);
28 setContentView(R.layout.stundenplan_auswahl);
29 //Log.e(TAG, "onCreate gestartet.");
30 }
31
32 public void wechsle11(final View view) {
33 startActivity(new Intent(this, plan11.class));
34 }
35
36 /*public void aktual(View view) {
37 Log.e(TAG, "aktual gestartet");
38 if (klick == false) {
39 b.setText(getString(R.string.ds_ButtonAktualisieren2));
40 try {
41 Class c = Class.forName(name);
42 Object o = c.getDeclaredConstructor(Context.class).newInstance(this);
43 if (o instanceof View) {
44 f.removeAllViews();
45 f.addView((View) o, params);
46 f.forceLayout();
47 klick = true;
48 }
49 } catch (Throwable tr) {
50 Log.e(TAG, "Fehler bei Instanziieren von "+ name, tr);}
51 }
52
53 else {
54 klick = false;
55 b.setText(getString(R.string.ds_ButtonAktualisieren1));
56 }
57 }/*/
58
59}


Die xml-Datei:
1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:orientation="vertical" >
6
7
8 <TextView
9 android:layout_width="wrap_content"
10 android:layout_height="wrap_content"
11 android:layout_gravity="center_horizontal"
12 android:text="@string/ds_TextView1" />
13
14
15 <TextView
16 android:layout_width="wrap_content"
17 android:layout_height="wrap_content"
18 android:layout_gravity="center_horizontal"
19 android:text="@string/ds_TextView2"
20 android:textAppearance="?android:attr/textAppearanceLarge" />
21
22 <Button
23 android:layout_width="match_parent"
24 android:layout_height="wrap_content"
25 android:text="@string/ds_Button11"
26 android:onClick="wechsle11"/>
27
28 <Button
29 android:layout_width="match_parent"
30 android:layout_height="wrap_content"
31 android:text="@string/ds_Button12" />
32
33 <Button
34 android:layout_width="match_parent"
35 android:layout_height="wrap_content"
36 android:text="@string/ds_Button13"/>
37
38 <Button
39 android:id="@+id/button1"
40 android:layout_width="match_parent"
41 android:layout_height="wrap_content"
42 android:text="@string/ds_ButtonAktualisieren1"
43 android:onClick="aktual"
44 />
45
46
47 <FrameLayout
48 android:id="@+id/frame1"
49 android:layout_width="wrap_content"
50 android:layout_height="wrap_content"
51 />
52
53</LinearLayout>

Wenn die beiden Bereiche auskommentiert sind, lässt sich die Activity starten, nur der Aktualisieren-Button löst dann natürlich einen Fehler aus.
Hier mal die Fehlermeldung die erscheint, wenn beide Bereiche unkommentiert sind, die Activity lässt sich dann garnicht starten, es kommt immer die Sorry!-Fehlermeldung im System. Hier mal der LogCat für den Falls das alles unkommentiert ist:

111-04 10:08:39.295: D/AndroidRuntime(352): Shutting down VM
211-04 10:08:39.306: W/dalvikvm(352): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
311-04 10:08:39.325: E/AndroidRuntime(352): FATAL EXCEPTION: main
411-04 10:08:39.325: E/AndroidRuntime(352): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.yorrickreinhart.dashboard/com.yorrickreinhart.dashboard.StundenplanAuswahl}: java.lang.NullPointerException
511-04 10:08:39.325: E/AndroidRuntime(352): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
611-04 10:08:39.325: E/AndroidRuntime(352): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
711-04 10:08:39.325: E/AndroidRuntime(352): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
811-04 10:08:39.325: E/AndroidRuntime(352): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
911-04 10:08:39.325: E/AndroidRuntime(352): at android.os.Handler.dispatchMessage(Handler.java:99)
1011-04 10:08:39.325: E/AndroidRuntime(352): at android.os.Looper.loop(Looper.java:123)
1111-04 10:08:39.325: E/AndroidRuntime(352): at android.app.ActivityThread.main(ActivityThread.java:4627)
1211-04 10:08:39.325: E/AndroidRuntime(352): at java.lang.reflect.Method.invokeNative(Native Method)
1311-04 10:08:39.325: E/AndroidRuntime(352): at java.lang.reflect.Method.invoke(Method.java:521)
1411-04 10:08:39.325: E/AndroidRuntime(352): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
1511-04 10:08:39.325: E/AndroidRuntime(352): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
1611-04 10:08:39.325: E/AndroidRuntime(352): at dalvik.system.NativeStart.main(Native Method)
1711-04 10:08:39.325: E/AndroidRuntime(352): Caused by: java.lang.NullPointerException
1811-04 10:08:39.325: E/AndroidRuntime(352): at android.app.Activity.findViewById(Activity.java:1637)
1911-04 10:08:39.325: E/AndroidRuntime(352): at com.yorrickreinhart.dashboard.StundenplanAuswahl.<init>(StundenplanAuswahl.java:22)
2011-04 10:08:39.325: E/AndroidRuntime(352): at java.lang.Class.newInstanceImpl(Native Method)
2111-04 10:08:39.325: E/AndroidRuntime(352): at java.lang.Class.newInstance(Class.java:1429)
2211-04 10:08:39.325: E/AndroidRuntime(352): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
2311-04 10:08:39.325: E/AndroidRuntime(352): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
2411-04 10:08:39.325: E/AndroidRuntime(352): ... 11 more

Ich habe da leider noch überhaupt keinen Überblick, beim Auslesen der Fehlermeldungen, außer das wohl eine NullPointerException vorliegt. Ich weiß aber nicht wo genau die auftritt.
Es wäre toll wenn ihr mir helfen könnt.

PS: Kann mir jemand sagen, wie ich in diesem Board Spoiler mache? Dann muss man nicht immer durch den gesamten Code scrollen...

— geändert am 04.11.2011, 11:14:19

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

04.11.2011, 11:22:23 via Website

hmm woher hast denn den code ??

final Button b = (Button) findViewById(R.id.button1); */
24
25 @Override
26 public void onCreate(Bundle savedInstanceState) {
27 super.onCreate(savedInstanceState);
28 setContentView(R.layout.stundenplan_auswahl);
29 //Log.e(TAG, "onCreate gestartet.");
30 }

du versuchst direkt den Button zu holen. das kann nicht klappen. Das darf erst NACH dem setContentView() passieren.

swordiApps Blog - Website

Antworten
Yorrick R.
  • Forum-Beiträge: 60

04.11.2011, 11:31:39 via Website

Ich habe den Code aus verschiedenen Beispielen abgeleitet.
Also, mach ich das dann so richtig?
1@Override
2 public void onCreate(Bundle savedInstanceState) {
3 super.onCreate(savedInstanceState);
4 setContentView(R.layout.stundenplan_auswahl);
5 Log.e(TAG, "onCreate gestartet.");
6 final FrameLayout f = (FrameLayout) findViewById(R.id.frame1);
7 final Button b = (Button) findViewById(R.id.button1);
8 }

Dann muss ich doch auch die Methode aktual() in die onCreate()-Methode verschieben, weil sich Eclipse sonst beschwerd das b und f "unused" sind.
Nur mache ich das, bekomme ich für aktual() immer gesagt "void is an invalid type for the variable aktual".
Auch wenn ich sie bisher noch nicht hinbekommen habe, soll ich es lieber mit onClickListenern versuchen?

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

04.11.2011, 11:45:36 via Website

guter ratschlag: lern zuerst die java grundlagen.

swordiApps Blog - Website

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

04.11.2011, 11:51:21 via Website

Wenn Deine Altersangabe stimmt dann bist Du 18 - ein paar Fragen sind also erlaubt. Ich kann auch kein Java und frickel mir das alles nur zusammen. In Wahrheit hasse ich Java ...

1private FrameLayout f;
2private Button b;
3
4@Override
5public void onCreate(Bundle savedInstanceState) {
6 super.onCreate(savedInstanceState);
7 setContentView(R.layout.stundenplan_auswahl);
8 Log.e(TAG, "onCreate gestartet.");
9 f = (FrameLayout) findViewById(R.id.frame1);
10 b = (Button) findViewById(R.id.button1);
11 ...
12}

Antworten
Yorrick R.
  • Forum-Beiträge: 60

04.11.2011, 12:01:33 via Website

Ach natürlich, vergessen zu initialisieren... Ist ein Fluch, wenn man mit Python angefangen hat...
Nun, danke euch beiden, jetzt erscheint die Bar, löschen klappt noch nicht aber da meine Freistunden gleich zu Ende sind, beschäftige ich mich später wieder damit. Ich darf jetzt erstmal eine Arbeit schreiben gehen... -.-

Und ja ich weiß, dass ich ein blutiger Anfänger bin was Java und vor allem Android betrifft... Aber aus seinen Fehlern lernt man schließlich...

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

04.11.2011, 12:02:03 via Website

hmm

1) wie kommst du auf 18 ?

2) du hasst java ? warum willst du dann android apps machen ? das macht irgendwie keinen sinn.

ohne die grundlagen, wird man wohl sehr schnell scheitern. ich weiß, es sieht alles so einfach aus, ist es aber nicht immer :)

swordiApps Blog - Website

Antworten
Yorrick R.
  • Forum-Beiträge: 60

04.11.2011, 12:05:44 via Website

Also, ich bin fast 18... :grin:
Und das man ohne Grundlagen bzw. mit dämlichen Fehlern nicht weit kommt, wusste ich schon voher. Wobei bei mir die dämlichen Fehler meistens überwiegen...

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

04.11.2011, 12:10:29 via Website

dämliche fehler sind nicht das problem.

aber eine member variable richtig zu instanzieren oder eine methode korrekt aufzurufen sollten drin sein bevor man mit android beginnt :D

swordiApps Blog - Website

Antworten