Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回null并生成NullPointerException的活动,即使我实现了它_Java_Android_Parse Platform_Nullpointerexception_Parse Android Sdk - Fatal编程技术网

Java 返回null并生成NullPointerException的活动,即使我实现了它

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();

我有一个扩展ParseQUeryAdapter的类,因此可以使用
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();
    }
}