【问题标题】:Display Toast from within static method in Android在 Android 的静态方法中显示 Toast
【发布时间】:2013-07-23 01:01:02
【问题描述】:

我希望在我的静态方法中满足特定条件时向屏幕显示敬酒,如下所示:

public static void setAuth(String a) {

    String[] nameparts1;

    if (a.trim().isEmpty()) {
        author = "Author's Name";
        firstinit1 = "Initial";
        surname1 = "Surname";
    }

    if (a == 'X') {
        Toast ifx = Toast.makeText(getApplicationContext(), "Please enter name in correct format.", Toast.LENGTH_SHORT);
        ifx.show();
    }
}

但是,这给了我错误:“无法从 ContextWrapper 类型对非静态方法 getApplicationContext() 进行静态引用”。

希望我在这里提供了足够的信息。任何帮助将不胜感激!

【问题讨论】:

  • 有点奇怪,这是静态的,不是吗?您可能不应该这样做:这意味着您依靠 Android 不会杀死您的应用程序。一旦它死了,你的静态引用就会死掉。

标签: android methods static toast


【解决方案1】:

将上下文作为参数传入(在调用中,使用 getApplicationContext() 作为输入),在静态函数中,使用上下文:

public static void setAuth(String a, Context context) {
...
Toast ifx = Toast.makeText(context, "Please enter name in correct format.", Toast.LENGTH_SHORT);
...
}

在函数调用中

setAuth("Some String",getApplicationContext());

【讨论】:

  • 这里我看到错误:不能从静态上下文引用非静态方法 getapplicationcontext()
【解决方案2】:

您必须将上下文作为参数传递给您的方法

public static void dialog(boolean value, Context context) {
        if (value) {
 Toast.makeText(context, "", Toast.LENGTH_SHORT).show();

}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多