有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java安卓从静态方法生成Toast

我试图将一个字符串从一个单独的静态java类传递到Blankfragment中的一个方法。爪哇

这是blankFragment中的方法。java,问题是它无法访问非静态的getContext()

public static void ShowMessage(String message){
    Toast.makeText(getContext() ,message , Toast.LENGTH_LONG).show();
}

以及separatestaticjava类中的方法调用:

BlankFragment.ShowMessage(new String(body));

有没有办法从外部检索上下文并将其作为参数传递?getContext()不工作,出现错误“无法解析符号”


共 (2) 个答案

  1. # 1 楼答案

    如果您正在使用此方法(或从片段调用它),则片段可以通过getActivity();访问活动。将其作为参数传递

    但是如果您实际上在片段(显示Toast消息)中使用该方法,那么您可以尝试使用getActivity()而不是getContext().

  2. # 2 楼答案

    您可以尝试将上下文作为参数传递。由于这是一个片段,我建议您检查空值

    public static void ShowMessage(Context context, String message){
        if (context == null) return;
        Toast.makeText(context, message, Toast.LENGTH_LONG).show();
    }
    
    BlankFragment.ShowMessage(getContext(), new String(body));
    

    注意:

    我一直在处理片段,我非常讨厌它们的生命周期。我不完全清楚为什么需要一个涉及上下文的静态方法,但我建议不要这样做。而是使用Command pattern或其他东西。通常我会发现,直到片段“稳定下来”,上下文才变得可用