Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.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 警报对话框返回_Android_Android Alertdialog - Fatal编程技术网

Android 警报对话框返回

Android 警报对话框返回,android,android-alertdialog,Android,Android Alertdialog,我创建了一个通用标记器类,可以在整个应用程序中使用。因此,可以使用包含活动有效标记类型的AlertDialog将活动1标记为type1、type2等。标记被正确地存储到数据库中,但是现在我想用所选的值更新活动中的TextView 我尝试使用AsyncTask,但似乎无法设置AlertDialog的背景(这很有意义)。我尝试View.post(Runnable)方法得到了类似的结果 鉴于AlertDialog发生在外部类中,我是否可以知道它已在我的主要活动中关闭,然后更新TextView?取决于A

我创建了一个通用标记器类,可以在整个应用程序中使用。因此,可以使用包含活动有效标记类型的AlertDialog将活动1标记为type1、type2等。标记被正确地存储到数据库中,但是现在我想用所选的值更新活动中的TextView

我尝试使用AsyncTask,但似乎无法设置AlertDialog的背景(这很有意义)。我尝试View.post(Runnable)方法得到了类似的结果


鉴于AlertDialog发生在外部类中,我是否可以知道它已在我的主要活动中关闭,然后更新TextView?

取决于AlertDialog初始化代码的位置。如果您是从需要更新的活动启动AlertDialog,则可以在对话框的OnClickListener回调中调用该活动的一个方法。如果对话框正在应用程序的其他位置初始化,并且不知道哪个活动将是当前活动,您可以使用LocalBroadcastManager从AlertDialog的回调发送广播消息,并在每个活动中注册/取消注册BroadcastReceiver,如果该活动是当前活动的,则需要更新该活动。

只需实现
onClick()
listener for positive按钮:

new AlertDialog.Builder(this)
  .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
     public void onClick(DialogInterface dialog, int whichButton)
     {
       TextView text = (TextView) v.findViewById(R.id.my_view);
       if (text != null)
       {
         text.setText("Your Text");
       }
     })
  .setNegativeButton(R.string.cancel, null).create().show();

如果我理解正确,您想知道对话框何时被取消。为此有一个回调,OnDismissListener。让您的活动实现该接口并为回调注册自身。