Jak aktualizować textview w asynctask?

0

Chciałbym żeby textview zmieniał się po każdej zmianie licznika. Jednak nie moge zrobić tego w dolnbackground bo program się wykrzacza a gdy zrobię to w onpostexecute aktualizuje się dopiero po wcisnięciu przycisku stop.

class Timer extends AsyncTask<Void,Void,Void> {
	boolean sprStop = true;
	int licznik = 0;
	int licz = 0;
    String liczba;


        TextView ramka1;
        
        Timer (TextView r1){
     ramka1 = r1;
 }        
	@Override
	protected Void doInBackground(Void... params) {
		while(sprStop) {
	           
	           try {
	               Thread.sleep(100);
	           } catch (InterruptedException ex) {
	               
	           }
	           licznik++;
	           if(licznik == 6)
	           {
	               licznik =0;
	           }
	           
	           //ramka1.setText(String.valueOf(licznik));
	       }
		return null;
	}
	@Override
    protected void onPostExecute(Void result) {
		//ramka1.setText(String.valueOf(licznik));
    }

};

public class MainActivity extends ActionBarActivity {
	TextView licznik1;
	TextView licznik2;
	TextView licznik3;
	Button start;
	Button stop;
	Timer l1;
	
	public void obsluga_Start(View v)
    {
		licznik1=(TextView) findViewById(R.id.licznik1);
		licznik2=(TextView) findViewById(R.id.licznik2);
		licznik3=(TextView) findViewById(R.id.licznik3);
		l1 = new Timer(licznik1);
	    l1.execute();

    }
	public void obsluga_Stop(View v)
    {
		l1.sprStop = false;
    }
1

Uaktualniaj TextView w metodzie onProgressUpdate, natomiast wartość licznika przekazuj metodą publishProgress. Drugi parametr w deklaracji AsyncTask'a odpowiada za typ przekazywanej wartości.

class Timer extends AsyncTask<Void,Integer,Void> {
    boolean sprStop = true;
    int licznik = 0;
    int licz = 0;
    String liczba;
 
 
        TextView ramka1;
 
        Timer (TextView r1){
     ramka1 = r1;
 }        
    @Override
    protected Void doInBackground(Void... params) {
        while(sprStop) {
 
               try {
                   Thread.sleep(100);
               } catch (InterruptedException ex) {
 
               }
               licznik++;
               if(licznik == 6)
               {
                   licznik =0;
               }
               
               publishProgress(licznik);
               //ramka1.setText(String.valueOf(licznik));
           }
        return null;
    }
    @Override
    protected void onPostExecute(Integer result) {
        ramka1.setText(String.valueOf(result));
    }

    protected void onProgressUpdate(Integer... progress) {
         ramka1.setText(String.valueOf(progress));
     }
 
};

1 użytkowników online, w tym zalogowanych: 0, gości: 1