当我的代码运行到此行时:
Context context = new Activity().getApplicationContext();
抛出异常:
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
我尝试创建new Handle()
并在其前添加Looper.prepare()
,但它不起作用。
答案 0 :(得分:1)
android中的上下文不是一个抽象的东西。它是应用程序及其组件的当前状态的真实上下文(或者您可以将其视为环境)。
所以你不应该创建' context'的新实例。只是为了使用它提供的功能。正确的方法是使用实际的现有Context。这有两种方式:
答案 1 :(得分:0)
查看抛出的异常,您可能会要求某个类中的上下文不会扩展某种类型的Activity。
您可能需要在类的构造函数中传递上下文。见下面的例子。
public class ExampleClass {
private Context context;
public ExampleClass(Context context) {
this.context = context;
}
}
在Activity类中,您可以创建类并在其中传递上下文。
public class mainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.example);
ExampleClass exampleClass = new ExampleClass(getApplicationContext());
}
}
答案 2 :(得分:0)
如果您正在运行需要上下文的方法,并且该方法在从Activity扩展的类中运行,那么您可以通过为该活动声明变量然后在onCreate中获取该活动的上下文方法做 - >活性=此;
I,E
Activity activity;
//this is globally declared
在onCreate里面做活动=这个;
void onCreate(Bundle savedInstanceState)
{
....
activity=this;
....
}
现在你在“activity”变量中拥有当前活动的上下文。你可以在你的方法中使用它,或者将它作为参数或任何你想要的方式传递...如果你有不在的方法一个Activity类,然后你应该通过将这个“activity”变量传递给该方法来调用它。