0

我在应用程序之外显示祝酒词。

我在 Toast 上工作得很好:

  Toast.makeText(getBaseContext(),"Text").show();

但是当我尝试使用 Dialog 我返回一个

        final Dialog dialog_edu = new Dialog(getBaseContext());
        dialog_edu.setTitle("Choose Action");       
        dialog_edu.show();

它返回这个:

 01-28 18:02:04.734: W/WindowManager(329): Attempted to add window with non-application token WindowToken{41c01dd8 token=null}.  Aborting.
 01-28 18:02:04.734: E/AndroidRuntime(2626): FATAL EXCEPTION: main
 01-28 18:02:04.734: E/AndroidRuntime(2626): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

如果我在上下文中使用“MyAcitivity.this”,它可以在应用程序中使用,但在我外出使用应用程序时不会。另一方面,Toast 在应用程序内部和外部工作。

我读过,你可以使用:getActivity() 和其他,但在当前状态下它返回相同的错误。

如果我使用处理程序并尝试延迟对话框的构建,则它在 1 整秒的延迟时间内无效。

那么如何让对话框在应用程序内部和外部工作。

4

3 回答 3

0

使用 getParent() 而不是 getBaseContext()。

否则,使用如下所示。因为这个问题是时间问题。

上下文上下文 = getBaseContext(); 新对话框(上下文);

尝试以上两种方式。:-)

于 2014-01-29T08:28:23.540 回答
0

你可能失踪了()。所以它会像,

final Dialog dialog_edu = new Dialog(getBaseContext());
于 2014-01-28T17:14:58.613 回答
0

那么如何让对话框在应用程序内部和外部工作。

您创建一个以对话框为主题的活动。

您不能在具有任何旧上下文的 Activity 之外显示标准对话框。虽然对话框构造函数只需要一个 Context,但它实际上需要一个 Activity,大概是为了将自身附加到 Activity 的窗口。Toast 没有这个限制,所以你可以使用任何 Context。

于 2014-01-29T23:18:00.397 回答