静态方法中的android上下文是未定义的

时间:2014-04-08 07:36:14

标签: java android static

我尝试将上下文放在我的静态方法中,如下所示:

public class Menu_SPPAJ extends Activity {
public static void onRefreshList() {
     model.requery();
     list_terbaru.setAdapter(new Adapter_Spaj_Terbaru(Menu_SPPAJ.this,model));
}
}

但静态方法中未定义Menu_SPPAJ.this,无论如何如何在静态方法中调用我的上下文?

6 个答案:

答案 0 :(得分:2)

您可以将上下文作为参数传递。

虽然看起来你的方法不应该是静态的,因为它正在访问看起来像成员变量的变量。

答案 1 :(得分:2)

您可以将一个参数作为上下文传递,如此

public static void show (Context context){
    Toast.makeText(context, "testing toast", Toast.LENGTH_LONG).show();
}

答案 2 :(得分:1)

Use this code for context in static method.

public class Menu_SPPAJ extends Activity {
public static Context context;
    @Override
    public void onCreate(Bundle savedInstanceState) {
       //TODO write your onCreate code
        context = this;
    }
public static void onRefreshList() {
     model.requery();
     list_terbaru.setAdapter(new Adapter_Spaj_Terbaru(((Activity) context),model));
}
}

答案 3 :(得分:1)

你改变了这样的静态方法,

public static void onRefreshList(Context context) {
model.requery();
list_terbaru.setAdapter(new Adapter_Spaj_Terbaru(context,model));

}

答案 4 :(得分:0)

您可以简单地使用Singleton Pattern。 如果您实现该模式,您可以使用类内部的所有非静态功能,并且仍然具有类似静态的行为。

答案 5 :(得分:0)

public class Menu_SPPAJ extends Activity {

public static void onRefreshList(Context context) {
 model.requery();
 list_terbaru.setAdapter(new Adapter_Spaj_Terbaru(context,model));
}

//如果您从创建然后

调用此方法
onCreate(){

onRefreshList(this);
}
}