Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.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
Android 更新数据库时使用AlertDialog或Toast_Android_Database_Updating - Fatal编程技术网

Android 更新数据库时使用AlertDialog或Toast

Android 更新数据库时使用AlertDialog或Toast,android,database,updating,Android,Database,Updating,我有一个带有数据库的应用程序。当数据更新时,我想显示一个带有旋转圆圈的AlertDialog或Toast。首先,您必须使用AsyncTask在后台线程中执行所有事务。 然后,当事务在后台线程中处理时,您只需在UI线程上显示ProgressDialog 这里是一个简单的AsyncTask模板,它在ProgressDialog中包含一个旋转圆,也称ProgressBar private class UpdateDataBaseAsyncTask extends AsyncTask<String

我有一个带有数据库的应用程序。当数据更新时,我想显示一个带有旋转圆圈的
AlertDialog
Toast

首先,您必须使用AsyncTask在
后台线程中执行所有事务。
然后,当事务在后台线程中处理时,您只需在
UI线程上显示
ProgressDialog

这里是一个简单的
AsyncTask
模板,它在
ProgressDialog

中包含一个旋转圆,也称
ProgressBar

private class UpdateDataBaseAsyncTask extends AsyncTask<String, Integer, Boolean> 
{

ProgressDialog pd;  

public UpdateDataBaseAsyncTask (..Your set of Variables for updating database..)
{
    pd = new ProgressDialog(cntx);
    pd.setTitle("Updating ...");
    pd.setCancelable(false);
    pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);

    //Initialization of your Database Handler, and other Database Transaction related objects.

}

@Override
protected void onPreExecute() {
    // TODO Auto-generated method stub
    super.onPreExecute();
    pd.show();
}

@Override
protected Boolean doInBackground(String... arg0) {
    // TODO Auto-generated method stub
    try
    {
        //Start Database Tranaction Here !
        //If the Transaction is successful, pass the boolean as true *result = true;*
    }

    catch(Exception e)
    {
        Log.e("YOUR TAG", "Error occured while updating Database !, Error = "+e.toStirng());
        //e.printStackTrace(); optional
        result = false;
    }

return result;
}

@Override
protected void onPostExecute(Boolean result) {
    // TODO Auto-generated method stub
    super.onPostExecute(result);

    pd.dismiss();

    if(result)
    {
        //tasks you want to perform when the database is successfully updated
    }
    else
    {
        //Show a failure Dialog here may be.
    }

}
}

我希望这会有所帮助。

我已经解决了Looper Prepare()的问题。

您是否使用task/asynctask来执行此操作?以前会使用什么版本的android?数据库来自哪里?这可能是设备本身上的数据库,也可能是托管在某处的数据库。如果它是托管的,您可以为此使用AsyncTask。在dall上显示服务的对话框,然后在POST上执行关闭该对话框或显示toast消息。此外,吐司不能有这样的转折点。:)它工作得很好,但当完成时。。。01-22 18:55:17.602:W/dalvikvm(1038):threadid=11:线程以未捕获异常退出(group=0x409c01f8)01-22 18:55:17.762:E/AndroidRuntime(1038):致命异常:AsyncTask#1原因:java.lang.RuntimeException:无法在未调用Looper的线程内创建处理程序。prepare()请共享异步类的代码。
YourActivity extends Activity
{
...
...
...
onCreate(...)
{
 //Your Implementation
 ...
 ...
 ...

 //Calling the AsyncTask
 new UpdateDataBaseAsyncTask(...).execute();
}
...
...
...
}