【问题标题】:Passing a context of a fragment to a class and display an alert dialog将片段的上下文传递给类并显示警报对话框
【发布时间】:2012-12-14 20:46:36
【问题描述】:

我目前正在开发一个 android 项目,但我遇到了上下文和 AlertDialogs 的问题。

我有一个扩展了 Fragment 的类,它创建了一个名为 Common 的标准 Java 类的实例,它具有从 Fragment 传递给它的上下文。在Common 类中,我有一些代码来显示警报对话框并根据用户单击的内容返回一个布尔值。

使用扩展 Activity 的标准类,我可以使用以下方法创建 Common 类的实例:

Common common = new Common(this);

然后我可以使用以下代码在此类中调用我的显示警报对话框函数。

common.showYesNoDialog("This is my message", false);

上面的代码工作正常,对于标准Activity 类。我的问题是这个。

在我的扩展片段类中,我无法将 this 传递给公共类,因此我必须使用以下代码:

Common common = new Common(getActivity().getApplicationContext());

我照常使用以下代码:

common.showYesNoDialog("This is my message", false);

当我调用上面的函数时,出现以下错误:

FATAL EXCEPTION: main
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application.

感谢您提供的任何帮助。

【问题讨论】:

  • 如果通用构造函数与this 一起使用,其中thisActivity 实例,那么为什么要使用getApplicationContext() 创建一个Common?为什么不直接使用getActivity()
  • 你试过这个Common common = new Common(Your_Current_Activity.this);
  • @A--C 谢谢我在想由于某种原因我需要在传递上下文时说getApplicationContext。但是您只使用 getActivity 是正确的。你能把它作为一个答案,我会接受它

标签: android fragment


【解决方案1】:

您应该使用getActivity() 而不是getActivity().getApplicationContext(),因为 getActivity() 返回一个 Activity,它是 Context 的子类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 2023-03-13
    • 2020-01-14
    • 1970-01-01
    相关资源
    最近更新 更多