PDA

View Full Version : نیازمند به کمک سریع: اجرای ترد



Sina.iRoid
دوشنبه 25 اسفند 1393, 10:19 صبح
سلام
دوستان من از دیشب تا حالا دارم روی این برنامه کار می کنم اما نمی دونم چرا درست نمیشه. من می خوام یه شمارنده ای و با ترد اجرا کنم اما نمیشه. یعنی می خوام از یک تا ده و با یک ثانیه وقفه نشون بده، اما بعد از ده ثانیه می گذره فقط جواب آخر که 10 هست و نشون میده. لطفا کمک کنید خیلی کارم گیره. ممنون.


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linearLayout01"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TextView
android:id="@+id/txtView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="0"
android:textSize="35sp"/>


<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txtView01"
android:layout_centerHorizontal="true"
android:layout_marginTop="22dp"
android:text="Click" />

</RelativeLayout>



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


public class MainActivity extends Activity implements OnClickListener, Runnable {

private TextView txtView;
private Button btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_main);

txtView = (TextView) findViewById(R.id.txtView01);
btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(this);
}


@Override
public void onClick(View v) {
run();
}


@Override
public void run() {
try {
for (int i = 0; i <= 10; i++) {
txtView.setText(i + " ");
Thread.sleep(1000);
}
} catch (InterruptedException e) {
txtView.setText("Main thread interrupted");
}
}
}

#root#
دوشنبه 25 اسفند 1393, 13:27 عصر
استفاده از Handler به نظرم بهتر هست.
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;

public class MainActivity extends Activity {

int counter = 0;
Handler h = new Handler();

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

h.post(new Runnable() {

@Override
public void run() {
if (counter <= 10) {
Log.i("", "Counter : " + counter);
counter++;
h.postDelayed(this, 1*1000);

}
}
});

}

}