如何在Recyclerview适配器类中调用主活动方法

时间:2019-06-10 11:05:45

标签: java android class android-fragments nullpointerexception

假设我有一个名为TestMe()的公共方法,并且我想在Recycler视图适配器类中使用此方法,以便如何实现。

我正在使用 首先声明 MainActivity activity =新的MainActivity(); activity.TestMe();

但显示错误为空异常

5 个答案:

答案 0 :(得分:1)

将您的Activity引用传递给Constructor中的Adapter或通过setter方法进行设置并调用您的TestMe方法。

if(activity instanceof MainActivity){
    ((MainActivity)activity).TestMe();
}

答案 1 :(得分:1)

您无法通过MainActivity activity=new MainActivity();创建实例您的活动。

正确的方法正在使用 instanceof

if(context instanceof MainActivity){

  MainActivity activity = (MainActivity)context;
  activity.TestMe(); 
}

答案 2 :(得分:1)

存储“活动”引用不是一个好主意,因此请使用界面。

创建界面

interface MyInterface{
    public void textMe();
}

使Activity实施界面

class MainActivity implements MyInterface {
…

将MyInterface实例传递给此类构造函数中的适配器

public MyAdapter(MyInterface interface){
    this.interface = interface;
}

然后像这样使用

this.interface.textMe();

答案 3 :(得分:0)

在创建和设置适配器的活动中,在构造函数中传递活动对象:

setAdapter(new Adapter(this));

将其存储在适配器中。

Adapter(Activity act){
   this.act = act;
}

然后,使用活动对象调用此方法。

act.TestMe();

答案 4 :(得分:-1)

'您可以使此函数静态化,并可以在任何地方使用类名调用它,例如'

public static testMe();

'并称呼它'

MainActivity.textMe();