Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓Can';t在未调用Looper.prepare()的线程内创建处理程序_Java_Android_Mysql - Fatal编程技术网

Java 安卓Can';t在未调用Looper.prepare()的线程内创建处理程序

Java 安卓Can';t在未调用Looper.prepare()的线程内创建处理程序,java,android,mysql,Java,Android,Mysql,要将输入值插入mysql数据库,我编写insert()方法 插入方法成功插入数据后,我想显示带有消息“Success”的对话框弹出窗口 但是我无法执行dialog.show()代码:( 可能是因为我通过了主要活动 Code in MainActivity public class MainActivity extends Activity { //call insert method to insert data into mysql new Thread(new Runnable()

要将输入值插入mysql数据库,我编写insert()方法

插入方法成功插入数据后,我想显示带有消息“Success”的对话框弹出窗口

但是我无法执行dialog.show()代码:(

可能是因为我通过了主要活动

Code in MainActivity 

public class MainActivity extends Activity {

//call insert method to insert data into mysql
 new Thread(new Runnable() {
                                    public void run() {
                                        insert(name.getText().toString());                                      
                                    }
                                }).start();


}



public void insert(final String name){

//insert logic code
//returns true if success

if(true)
{
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MainActivity.this);
                        alertDialogBuilder.setMessage("Record submited successfully!");
                          alertDialogBuilder.setTitle("Success!");
                          alertDialogBuilder.setCancelable(false);
                          alertDialogBuilder.setNeutralButton(android.R.string.ok,
                             new DialogInterface.OnClickListener() {
                             public void onClick(DialogInterface dialog, int whichButton){
                                 dialog.cancel();
                                 }
                             })
                          .show();  

}

}//END class MainActivity

这是我的问题:(

在主应用程序线程上调用
show()
,例如从
AsyncTask的
onPostExecute()
调用
AsyncTask

但是我想在插入数据时显示对话框如何在insert方法之外写入它?:(@ashish:我不知道什么是“在insert方法之外写入它”意思是。您在回答中显示的代码是从后台线程调用的。虽然数据库逻辑本身可以在后台线程中插入,但需要从主应用程序线程更新UI。@ashish:正如我在回答中建议的,将
线程更改为
异步任务
,然后拨盘og在
onPostExecute()
中工作。或者将对话框工作包装在
Runnable
中,并在
活动上调用
runnuithread()
。或者将对话框工作包装在
Runnable
中并调用
post()
在任何方便的小部件上。或者使用事件总线(如greenrobot的EventBus)引发一个插入完成的事件,该事件在主应用程序线程上拾取,然后显示对话框。或者使用
处理程序
从后台线程向其发送消息。谢谢你能给我举个同样的例子吗dev@ashish:嗯,下面是一个使用我书中的
AsyncTask
的示例: