Android - 使用静态方法制作Toast

时间:2017-01-11 15:35:29

标签: java android android-activity static toast

我试图将一个字符串从一个单独的静态java类传递给我的Blankfragment.java中的一个方法

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

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

该方法调用单独的 静态 java类:

BlankFragment.ShowMessage(new String(body));

有没有办法从外部检索上下文并将其作为参数传递? getContext()不起作用,我收到错误"无法解析符号"

2 个答案:

答案 0 :(得分:5)

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">

<TextView
android:text="Suggest improvements or changes, or report bugs."
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
// remove margin top
android:id="@+id/textView5"
android:textColor="@color/Black"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp" />
  ........
         .......
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
// remove margin top, can be added margin as needed

<EditText
    android:layout_height="wrap_content"
    android:inputType="textEmailAddress"
    android:ems="10"
    android:id="@+id/email_feedback_text"
    android:layout_marginLeft="125dp"
    android:layout_width="250dp"
    android:layout_alignParentBottom="false"
    android:layout_marginRight="5dp" />
     ......
           ..........
     </RelativeLayout>

注:

只是一直在使用Fragments,我绝对讨厌他们的生命周期。我不完全确定为什么你需要一个涉及上下文的静态方法,但我建议不要这样做。而是使用Command pattern或其他东西。通常情况下,我会发现,直到片段已经安定下来&#34; - 然后上下文变得可用。

答案 1 :(得分:0)

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

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