我的程序是随机字符串 首先我按下按钮开始然后随机 其次我再次按下相同的按钮停止我该怎么办?
我的代码
package com.Randomsentence;
import java.util.Random;
import android.app.Activity;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class Randomsentence extends Activity {
protected static final int CONTINUE = 0;
protected static final int STOP = 0;
TextView txt;
int time = 30;
int random;
public String[] myString;
Button bt1;
boolean check = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txt=(TextView)findViewById(R.id.txt);
bt1 = (Button)findViewById(R.id.bt1);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
thread.start();
}
});
}
// our handler
Handler handler = new Handler() {
public void handleMessage(Message msg) {//display each item in a single line
{
if (check == false) {
Random rgenerator = new Random();
Resources res = getResources();
myString = res.getStringArray(R.array.myArray);
String q = myString[rgenerator.nextInt(myString.length)];
txt.setText(q);
}
}
}
};
Thread thread = new Thread() {
@Override
public void run() {
try {
while(true) {
sleep(1000);
handler.sendMessage(handler.obtainMessage());
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
}
这是XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
androidrientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<RelativeLayout android:id="@+id/relativeLayout1" android:layout_height="fill_parent" android:layout_width="fill_parent" android:layout_marginBottom="40px" android:layout_marginLeft="40px" android:layout_marginRight="40px" android:layout_marginTop="40px">
<TextView android:layout_height="wrap_content"
android:layout_alignParentLeft="true" android:text="TextView"
android:id="@+id/txt" android:layout_width="fill_parent"
android:layout_marginRight="40px"
android:layout_marginTop="50px"></TextView>
<Button android:text="Button" android:layout_height="wrap_content"
android:id="@+id/bt1" android:layout_width="wrap_content"
android:layout_below="@+id/txt" android:layout_alignLeft="@+id/txt"
android:layout_alignRight="@+id/txt" android:layout_marginLeft="40px"
android:layout_marginRight="40px" android:layout_marginTop="40px"></Button>
</RelativeLayout>
</LinearLayout>
这是array.xml插入文件夹值
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="myArray">
<item>ข้าว</item>
<item>ข้าว</item>
<item>เส้นใหญ่</item>
<item>เส้นเล็ก</item>
<item>วุ้นเส้น</item>
<item>ข้าวผัด</item>
<item>เส้นใหญ่</item>
<item>ข้าว</item>
<item>มักกะโรนี</item>
<item>ผัดผัก</item>
<item>ต้มยำ</item>
<item>ทอดกระเทียม</item>
<item>ผัดพริกเผา</item>
<item>ผัดกระเพรา</item>
<item>ผัดน้ำมันหอย</item>
<item>ต้มยำแห้ง</item>
<item>ทอดกระเทียม</item>
<item>แพนง</item>
<item>ผัดกระเพรา</item>
</string-array>
</resources>
答案 0 :(得分:1)
实际上,不建议停止线程,让操作系统为您完成。您应该在flag
循环中使用true
变量而不是while
,并在想要停止线程时将其更改为false
。关于Handlers
- 它们无法停止,因为它们只是设计用于同步线程,所以不要担心它们。
答案 1 :(得分:0)
你必须使用一些标志,这将决定何时不设置setRandom 初始化布尔变量
boolean showRandom = false;
单击按钮上的将其值设置如下
类似下面的内容
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
// tv.setHint(tv.getHint());
// while(counter<2){
showRandom = !showRandom;
System.out.println("..show random.."+showRandom);
t = new Thread() {
public void run() {
// register();
try {
while(showRandom){
System.out.println("..print dialog..");
sleep(1000);
handler.sendMessage(handler.obtainMessage());
// }
}
}catch(Exception ex){
ex.printStackTrace();
}
}
};
t.start();
}
// }
});