[英]Exception thrown when create new Activity() in Java
当我的代码运行到这一行时:
Context context = new Activity().getApplicationContext();
抛出异常:
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
我试图创建new Handle()
并在它之前添加Looper.prepare()
,但是它不起作用。
android 中的上下文不是抽象的东西。 它是应用程序及其组件当前状态的真实上下文(或者您可以将其假设为环境)。
因此,您不应仅仅为了使用它提供的功能而创建“上下文”的新实例。 正确的方法是使用实际存在的 Context。 这里有两种方法:
查看抛出的异常,您有可能在不扩展某种类型的 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());
}
}
如果您正在运行一个需要上下文的方法,并且该方法正在从 Activity 扩展的类中运行,那么您可以通过为该活动声明一个变量来获取该活动的上下文,然后在您的 onCreate 方法中执行 - > 活动=这个;
IE
Activity activity;
//this is globally declared
在onCreate里面做activity=this;
void onCreate(Bundle savedInstanceState)
{
....
activity=this;
....
}
现在您在“活动”变量中拥有当前活动的上下文。您可以在您的方法中使用它或将其作为参数或任何您想要的传递......如果您拥有不在活动类中的方法,那么您应该通过将此“活动”变量传递给该方法来调用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.