ورود

View Full Version : عدم اجرای ترد



(reza)
شنبه 05 دی 1394, 17:44 عصر
با سلام
من یک کد نوشتم که داخلش از ترد استفاده شده اما نمیدونم چه مشکلی داره که هنگام اجرای قطعه کد دارای ترد برنامه خفه میشه.... unfortunately stop
این قطعه کدی هست که داخلش استفاده کردم


package com.example.test2;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.widget.TextView;

public class MainActivity extends Activity {
String msg = "message: ";
TextView tt;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
tt = (TextView) findViewById(R.id.textView2);

Log.d(msg, "in the create event");

}
public void startCounter(View view) {
new Thread(new Runnable() {
public void run() {
for (int i = 0; i <=1000; i++) {
tt.setText(String.valueOf(i));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Log.d("Threading", e.getLocalizedMessage());
}
}
}
}).start();


}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.d(msg, "in the start event");

}

@Override
public void onRestart() {
super.onRestart();
//setContentView(R.layout.activity_main);
Log.d(msg, "in the restart event");
}

@Override
public void onResume() {
super.onResume();
Log.d(msg, "in the resume event");
}

@Override
public void onPause() {
super.onPause();
Log.d(msg, "in the pause event");
}

@Override
public void onStop() {
super.onStop();
Log.d(msg, "in the stop event");
}

@Override
public void onDestroy() {
super.onDestroy();
Log.d(msg, "in the destroy event");
}

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




}

msroid
شنبه 05 دی 1394, 18:02 عصر
سلام

viewهارو فقط MainThread میتونه دست کاری کنه. پس شما بالای کلاست یه Handler تعریف کن بعدش کد رو به صورت زیر اصلاح کن:


public void startCounter(View view){
new Thread(new Runnable(){
public void run(){
for(int i = 0; i <= 1000; i++){
handler.post(new Runnable(){
tt.setText(String.valueOf(i);
}); // end of handler
} // end of for loop
// end of run
}).start();
}