在Java中创建新活动()时引发异常
当我的代码运行到此行时:在Java中创建新活动()时引发异常,java,android,Java,Android,当我的代码运行到此行时: Context context = new Activity().getApplicationContext(); 出现了一个例外: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 我尝试创建新句柄()并在其前面添加Looper.prepare(),但是它不起作用。查看抛出的异常,可能是在一个不扩展某种活动的类中请求
Context context = new Activity().getApplicationContext();
出现了一个例外:
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
我尝试创建
新句柄()
并在其前面添加Looper.prepare()
,但是它不起作用。查看抛出的异常,可能是在一个不扩展某种活动的类中请求上下文
您可能需要在类的构造函数中传递上下文。见下面的例子
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());
}
}
android中的上下文不是抽象的东西。它是应用程序及其组件当前状态的真实上下文(或者您可以假设它是环境) 因此,您不应该仅仅为了使用“上下文”提供的功能而创建新的“上下文”实例。正确的方法是使用实际存在的上下文。这里有两种方法:
- 使用现有组件的上下文-在大多数情况下,最好使用这种方式。任何子类化上下文的类都可以扮演这个角色。如果代码的该范围内没有可访问的上下文对象,则可以在方法调用或类构造函数中将其作为参数传递
- 使用应用程序上下文-以下是如何从应用程序中的任何位置以静态方式访问应用程序上下文的示例。 此解决方案将解决您的问题,但在使用时也有值得考虑的问题
void onCreate(Bundle savedInstanceState)
{
....
activity=this;
....
}
i、 e
并且在onCreate do activity内=此
void onCreate(Bundle savedInstanceState)
{
....
activity=this;
....
}
现在在“activity”变量中有了当前活动的上下文。您可以在方法中使用它,也可以将其作为参数或任何您想要的内容传递。。。如果您使用的方法不在Activity类中,那么应该通过将此“Activity”变量传递给该方法来调用它。您的实际需求是什么?我问这个是因为我觉得这段代码看起来很奇怪。在java类中运行函数时如何获取“上下文”?我从上面的代码中得到了这个错误。有没有其他方法来获取“上下文”?