App wird bei start des Timers beendet

acine123

Mitglied
Hallo.
Ich habe eine App geschrieben, bei der es ein TextView und einen Button gibt. Bei einem Klick auf den Button soll der Countdown von 10 herunterzählen.

MainActivity:
Java:
package com.creaz.clickit;

import java.util.Timer;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

	Button start;
	TextView time;
	Timer timer;
	int count;
	Timersession timeroptions;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		count = 10;
		create();
		addtimer();
		start.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {

				timer.schedule(timeroptions, 1000,1000);
				start.setEnabled(false);
				
			}
		});
		
	}

	@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;
	}

	public void create() {
		start = (Button) findViewById(R.id.go);
		time = (TextView) findViewById(R.id.timing);
		time.setText(String.valueOf(count));
	}
	public void addtimer(){
		timeroptions = new Timersession();
		timeroptions.setOption(this);
	}

}

TimerKlasse:
Java:
package com.creaz.clickit;

import java.util.TimerTask;

import android.widget.TextView;

public class Timersession extends TimerTask{
	
private MainActivity option;
	
	
	public void setOption(MainActivity option) {
		this.option = option;
	}

	@Override
	public void run() {
option.count-=1;
		option.time.setText(String.valueOf(option.count));
		
	}

}

Offenbar hat das Programm ein Problem damit, dass das TextView über die TimerKlasse verändert wird. Denn immer dann stürtzt sie ab. Was muss ich tun, dass ich das TextView aus der MainActivity von der Timer Klasse verändern kann?
 
Offenbar hat das Programm ein Problem damit, dass das TextView über die TimerKlasse verändert wird. Denn immer dann stürtzt sie ab. Was muss ich tun, dass ich das TextView aus der MainActivity von der Timer Klasse verändern kann?

GUI-Elemente kannst du nur auf dem UI-Thread ändern. Du musst also das setText deines TextViews auf dem UI-Thread ausführen. Schau dir mal die Methode post deines Textview an. Alternativ könnte das Handler Object hilfreich sein.

Viele Grüße
 

Zurück
Oben