Java 返回null并生成NullPointerException的活动,即使我实现了它
我有一个扩展ParseQUeryAdapter的类,因此可以使用Java 返回null并生成NullPointerException的活动,即使我实现了它,java,android,parse-platform,nullpointerexception,parse-android-sdk,Java,Android,Parse Platform,Nullpointerexception,Parse Android Sdk,我有一个扩展ParseQUeryAdapter的类,因此可以使用notifyDataSetChanged功能。适配器类称为maintadapter。 以下是我在mainAdapter中的notifyDataSetCHanged方法: @Override public void notifyDataSetChanged() { super.notifyDataSetChanged(); MainActivity mainActivity = new MainActivity();
notifyDataSetChanged
功能。适配器类称为maintadapter
。
以下是我在mainAdapter中的notifyDataSetCHanged方法:
@Override
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
MainActivity mainActivity = new MainActivity();
mainActivity.getItems();
}
以下是MainActivity中的my getItems()方法:
public void getItems(){
if(adapter == null){
Toast.makeText(MainActivity.this, "null", Toast.LENGTH_SHORT).show();
}
}
应用程序在加载时崩溃。正如您所看到的,我植入了一个if
,以便查看适配器
是否为空。但它仍然崩溃。
根据调试器,它在到达if
行后显示为绿色,“adapter:null”。但是,我在onCreate()中有以下内容:
我宣布:
mainAdapter adapter
有什么方法可以解决我的问题吗?虽然我正在实现这个类,但为什么它仍然是空的?我明确指出,
adapter=newmainadapter()
您不应该用new
实例化活动类;应使用startActivity()
和相关API与它们进行交互
使用new
创建的活动不会在ActivityManager中注册,不会显示在屏幕上,也不会调用其任何生命周期回调
由于您的MainActivity
实例的onCreate()
方法尚未运行,因此尚未创建adapter
在您的情况下,似乎希望您的ParseQueryAdaptor子类以某种方式引用您的活动,以便它可以访问正确的活动。如果您希望引用现有的活动,则必须将活动对象传递到要使用它的位置(或者,当您的应用程序位于可用的类中时,使用getContext或getActivity) 您可以做的一件事是创建一个方法,将Main activity对象传递到您的ParseQUeryAdapter中。然后,当您在适配器中调用stuff时,请执行:
activityObject。您希望调用什么方法来调用每个activity()
即:
错误来自您自己实例化的活动,该活动不会触发生命周期回调,因此适配器将为空。请使用正确的活动。我该如何做>使用意图:::Intent bullFrogIntent=new Intent(getApplicationContext(),BullFrog\u main activity.class);startActivityForResult(bullFrogIntent,1);我会尝试做一些事情。@Austi01101110,“1”代表什么?你问的是如何做“引用你的活动”的事情,而不是“startActivity”,对吗?好吧,让你的活动创建ParseQueryAdapter子类,然后发送“this”我的notifyDataSetChanged
方法中的错误,或者我声明了adapter=new maintadapter
?由于某种原因,notifyDataSetChanged没有被突然调用,这本不应该影响它。您是否从主活动调用了适配器中的安装方法?不管怎样。修复了它。但是getItems()没有被调用,但它没有崩溃。耶!显然是“适配器”如果这段代码实际上在一个不同的活动中,而另一个不同的活动在前台,那么很有可能你试图引用的活动被android系统破坏了&因此适配器实例被设置为null。除此之外,我帮不了你多少忙。
mainAdapter adapter
private MainActivity activity;
public void setup(MainActivity activity){ this.activity = activity;}
@Override
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
if(activity != null){
activity.getItems();
}
}