Android在uithread上运行-我想在5秒内打开对话框,有人能帮我解决这个问题吗 TimerTask TimerTask=new TimerTask(){ @凌驾 公开募捐{ HashMap map=MainActivity.restime; 最终列表ls=UStats.printCurrentUsageStatuspop(ServiceTest.this,“每日”); AlertDialog.Builder alertDialogBuilder=新建AlertDialog.Builder( 服务测试; //定名 alertDialogBuilder.setTitle(“您的标题”); //设置对话框消息 alertDialogBuilder .setMessage(“单击是退出!”) .setCancelable(错误) .setPositiveButton(“是”,新的DialogInterface.OnClickListener(){ public void onClick(DialogInterface对话框,int-id){ //如果单击此按钮,请关闭 //当前活动 dialog.cancel(); } }) .setNegativeButton(“否”,新的DialogInterface.OnClickListener(){ public void onClick(DialogInterface对话框,int-id){ //如果单击此按钮,只需关闭 //打开对话框,不执行任何操作 dialog.cancel(); } }); //创建警报对话框 AlertDialog AlertDialog=alertDialogBuilder.create(); //表现出来 alertDialog.show(); } };
抛出错误:Android在uithread上运行-我想在5秒内打开对话框,有人能帮我解决这个问题吗 TimerTask TimerTask=new TimerTask(){ @凌驾 公开募捐{ HashMap map=MainActivity.restime; 最终列表ls=UStats.printCurrentUsageStatuspop(ServiceTest.this,“每日”); AlertDialog.Builder alertDialogBuilder=新建AlertDialog.Builder( 服务测试; //定名 alertDialogBuilder.setTitle(“您的标题”); //设置对话框消息 alertDialogBuilder .setMessage(“单击是退出!”) .setCancelable(错误) .setPositiveButton(“是”,新的DialogInterface.OnClickListener(){ public void onClick(DialogInterface对话框,int-id){ //如果单击此按钮,请关闭 //当前活动 dialog.cancel(); } }) .setNegativeButton(“否”,新的DialogInterface.OnClickListener(){ public void onClick(DialogInterface对话框,int-id){ //如果单击此按钮,只需关闭 //打开对话框,不执行任何操作 dialog.cancel(); } }); //创建警报对话框 AlertDialog AlertDialog=alertDialogBuilder.create(); //表现出来 alertDialog.show(); } };,android,Android,抛出错误: TimerTask timerTask = new TimerTask() { @Override public void run() { HashMap<String, Integer> map = MainActivity.restime; final List<String> ls = UStats.printCurrentUsageStatuspop(ServiceTest.this, "Daily"
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
HashMap<String, Integer> map = MainActivity.restime;
final List<String> ls = UStats.printCurrentUsageStatuspop(ServiceTest.this, "Daily");
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
ServiceTest.this);
// set title
alertDialogBuilder.setTitle("Your Title");
// set dialog message
alertDialogBuilder
.setMessage("Click yes to exit!")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// if this button is clicked, close
// current activity
dialog.cancel();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// if this button is clicked, just close
// the dialog box and do nothing
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}
};
java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序
android.os.Handler.(Handler.java:200)
位于android.os.Handler.(Handler.java:114)
在android.app.Dialog.(Dialog.java:119)
在android.app.Dialog.(Dialog.java:168)
位于android.support.v7.app.AppCompatDialog.(AppCompatDialog.java:43)
位于android.support.v7.app.AlertDialog.(AlertDialog.java:95)
位于android.support.v7.app.AlertDialog$Builder.create(AlertDialog.java:927)
位于com.example.admin.digitaltime.ServiceTest$1.run(ServiceTest.java:100)
在java.util.Timer$TimerImpl.run(Timer.java:284)
你知道这些方法吗
1.post(可运行可运行)
2.postDelayed(可运行、可运行、长延迟时间)
它们都是视图类的方法,所以您可以在任何视图上调用它们,如按钮、文本视图等
我不太清楚您的问题,但我认为您可能需要第二种方法来获得UI线程的延迟。欢迎使用。在发布之前,这就是你应该如何格式化你的问题:你的代码部分,stacktrace应该在代码块中,这样的代码块应该是可读的,没有不必要的垃圾,比如注释代码部分。你的问题是重复的。看一看
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.<init>(Handler.java:200)
at android.os.Handler.<init>(Handler.java:114)
at android.app.Dialog.<init>(Dialog.java:119)
at android.app.Dialog.<init>(Dialog.java:168)
at android.support.v7.app.AppCompatDialog.<init>(AppCompatDialog.java:43)
at android.support.v7.app.AlertDialog.<init>(AlertDialog.java:95)
at android.support.v7.app.AlertDialog$Builder.create(AlertDialog.java:927)
at com.example.admin.digitaltime.ServiceTest$1.run(ServiceTest.java:100)
at java.util.Timer$TimerImpl.run(Timer.java:284)