假设我有一个名为TestMe()的公共方法,并且我想在Recycler视图适配器类中使用此方法,以便如何实现。
我正在使用 首先声明 MainActivity activity =新的MainActivity(); activity.TestMe();
但显示错误为空异常
答案 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();