Erste App will nicht?

E

Elbern

Neues Mitglied
0
Guten Abend,

so eben habe ich mich an meine erste App getan, sie will aber nicht.
Es gibt einen Button und eine ProcessBar, nach jedem drücken soll die ProcessBar ein Stück nach vorne gehen.

Nun das Problem, die App startet und danach crasht sie wieder, hier mal der Code:

Code:
package de.elbern.ersteapp;


import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ProgressBar;
import android.os.Build;

public class MainActivity extends ActionBarActivity {

	Button btn = (Button) findViewById(R.id.button1);
	ProgressBar progress_bar = (ProgressBar) findViewById(R.id.progressBar1);
	int Progress_State = 0;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		if (savedInstanceState == null) {
			getSupportFragmentManager().beginTransaction()
					.add(R.id.container, new PlaceholderFragment()).commit();
		}
		
		btn.setOnClickListener(new View.OnClickListener() {			
			
			@Override
			
			public void onClick(View v) {
				Progress_State += 4;
				progress_bar.setProgress(Progress_State);				
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {

		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}

	/**
	 * A placeholder fragment containing a simple view.
	 */
	public static class PlaceholderFragment extends Fragment {

		public PlaceholderFragment() {
		}

		@Override
		public View onCreateView(LayoutInflater inflater, ViewGroup container,
				Bundle savedInstanceState) {
			View rootView = inflater.inflate(R.layout.fragment_main, container,
					false);
			return rootView;
		}
	}

}

Ich hoffe jemand sieht den Fehler.
 
Könntest du den ErrorLog posten? Wäre deutlich einfacher als jede Zeile zu durchkämmen.

LG
xilent
 
Button btn = (Button) findViewById(R.id.button1);
ProgressBar progress_bar = (ProgressBar) findViewById(R.id.progressBar1);


Das gehört auch in die onCreate()...
 
  • Danke
Reaktionen: Xilent
Danke für die Antwort, klappt aber leider immer noch nicht.

Hier der aktuelle Code:
Code:
package de.elbern.ersteapp;


import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ProgressBar;
import android.os.Build;

public class MainActivity extends ActionBarActivity {

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

		if (savedInstanceState == null) {
			getSupportFragmentManager().beginTransaction()
					.add(R.id.container, new PlaceholderFragment()).commit();
		}
		
		Button btn = (Button) findViewById(R.id.button1);		
		
		btn.setOnClickListener(new View.OnClickListener() {			
			
			@Override			
			public void onClick(View v) {
				Progress_State += 4;
				final ProgressBar progress_bar = (ProgressBar) findViewById(R.id.progressBar1);
				progress_bar.setProgress(Progress_State);				
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {

		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}

	/**
	 * A placeholder fragment containing a simple view.
	 */
	public static class PlaceholderFragment extends Fragment {

		public PlaceholderFragment() {
		}

		@Override
		public View onCreateView(LayoutInflater inflater, ViewGroup container,
				Bundle savedInstanceState) {
			View rootView = inflater.inflate(R.layout.fragment_main, container,
					false);
			return rootView;
		}
	}

}

Und hier der Log dazu:
Code:
06-23 12:58:01.184: D/AndroidRuntime(1166): Shutting down VM
06-23 12:58:01.184: W/dalvikvm(1166): threadid=1: thread exiting with uncaught exception (group=0xb3a99ba8)
06-23 12:58:01.244: E/AndroidRuntime(1166): FATAL EXCEPTION: main
06-23 12:58:01.244: E/AndroidRuntime(1166): Process: de.elbern.ersteapp, PID: 1166
06-23 12:58:01.244: E/AndroidRuntime(1166): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.elbern.ersteapp/de.elbern.ersteapp.MainActivity}: java.lang.NullPointerException
06-23 12:58:01.244: E/AndroidRuntime(1166): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
06-23 12:58:01.244: E/AndroidRuntime(1166): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
06-23 12:58:01.244: E/AndroidRuntime(1166): 	at android.app.ActivityThread.access$800(ActivityThread.java:135)
06-23 12:58:01.244: E/AndroidRuntime(1166): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
06-23 12:58:01.244: E/AndroidRuntime(1166): 	at android.os.Handler.dispatchMessage(Handler.java:102)
06-23 12:58:01.244: E/AndroidRuntime(1166): 	at android.os.Looper.loop(Looper.java:136)
06-23 12:58:01.244: E/AndroidRuntime(1166): 	at android.app.ActivityThread.main(ActivityThread.java:5017)
06-23 12:58:01.244: E/AndroidRuntime(1166): 	at java.lang.reflect.Method.invokeNative(Native Method)
06-23 12:58:01.244: E/AndroidRuntime(1166): 	at java.lang.reflect.Method.invoke(Method.java:515)
06-23 12:58:01.244: E/AndroidRuntime(1166): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
06-23 12:58:01.244: E/AndroidRuntime(1166): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
06-23 12:58:01.244: E/AndroidRuntime(1166): 	at dalvik.system.NativeStart.main(Native Method)
06-23 12:58:01.244: E/AndroidRuntime(1166): Caused by: java.lang.NullPointerException
06-23 12:58:01.244: E/AndroidRuntime(1166): 	at de.elbern.ersteapp.MainActivity.onCreate(MainActivity.java:34)
06-23 12:58:01.244: E/AndroidRuntime(1166): 	at android.app.Activity.performCreate(Activity.java:5231)
06-23 12:58:01.244: E/AndroidRuntime(1166): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
06-23 12:58:01.244: E/AndroidRuntime(1166): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
06-23 12:58:01.244: E/AndroidRuntime(1166): 	... 11 more
 
In Zeile 34 ist eine NullPointerexcepion.
In der Zeile steht:
Code:
btn.setOnClickListener(new View.OnClickListener() {
Da du aber vorher den button definiert hast macht das wenig Sinn.

Ich vermute eher
Code:
final ProgressBar progress_bar = (ProgressBar) findViewById(R.id.progressBar1);
.
Definiere die Progressbar mal außerhalb des OnClickHandlers. Innerhalb des OnClickHandlers funktioniert findViewById(); sowiso nicht, da der Handler kein Zugriff auf den View hat, solange dieser nicht Vorgegeben wird.
Ein Beispiel wäre:
Code:
final ProgressBar progress_bar = (ProgressBar) MainActivity.this.findViewById(R.id.progressBar1);

Lg Xilent
 
Code:
Button btn = (Button) findViewById(R.id.button1);
In welchen Layout hast du ihn definiert?

Wenn er nicht im Layout activity_main.xm defeniert wurde, gibt die Methode findViewById() null zurück.
 
Es ist im Layout fragment_main.xml, aber ist das nicht eig. normal?
 

Ähnliche Themen

U
  • unerfahrenerAppEntwickler
Antworten
3
Aufrufe
709
swa00
swa00
Manny87
  • Manny87
Antworten
11
Aufrufe
166
swa00
swa00
5
Antworten
22
Aufrufe
1.422
590239
5
Zurück
Oben Unten