Android 从(列表)适配器回调到活动
我有一个具有ListView的活动,我设置了一个适配器Android 从(列表)适配器回调到活动,android,Android,我有一个具有ListView的活动,我设置了一个适配器 MyAdapter extends BaseAdapter 该适配器具有回调接口 OnPdfClickedListener callback; public interface OnPdfClickedListener { public void onPdfClicked(); } 在活动中, MyActvivity implements MyAdapter.OnPdfClickedListener 及 这与所描述的基本
MyAdapter extends BaseAdapter
该适配器具有回调接口
OnPdfClickedListener callback;
public interface OnPdfClickedListener {
public void onPdfClicked();
}
在活动中,
MyActvivity implements MyAdapter.OnPdfClickedListener
及
这与所描述的基本相同,就像碎片的魅力一样。
从适配器尝试相同操作时,回调对象为null
我还尝试了实例化,比如
OnPdfClickedListener callback = new OnPdfClickedListener() {
@Override
public void onPdfClicked() {
// TODO Auto-generated method stub
}
};
我没有错误,但是活动中的相应方法从未被调用
我的问题是1。为什么回调对象在片段中使用时不是空的,它从来没有实例化过
二,。如何从适配器回调到活动
活动
很可能未注册为侦听器,使用您创建的回调
变量(与活动
无关)创建了一个OnPdfClickedListener的实例
,并且(可能)在事件发生时使用了该实例
如何从适配器回调到活动
将对活动的引用
传递给您的MyAdapter
类,将其强制转换为OnPdfClickedListener
并使用该引用调用onPdfClicked
而不是当前的回调
变量
活动
很可能未注册为侦听器,使用您创建的回调
变量(与活动
无关)创建了一个OnPdfClickedListener的实例
,并且(可能)在事件发生时使用了该实例
如何从适配器回调到活动
将对活动的引用
传递给您的MyAdapter
类,将其强制转换为OnPdfClickedListener
,并使用该引用调用onPdfClicked
,而不是当前的回调
变量。尝试添加以下内容:
在实现接口的活动中:
new MyAdapter(this,....);
在适配器中:
MyAdapter(Context context, ...){
callback = (OnPdfClickedListener)context;
}
尝试添加以下内容:
在实现接口的活动中:
new MyAdapter(this,....);
在适配器中:
MyAdapter(Context context, ...){
callback = (OnPdfClickedListener)context;
}
真管用,多谢了!我仍然不明白为什么,但我还是要想一想:)@Ascorbin要发送事件(pdf单击),您将在类型为
OnPdfClickedListener
的对象上调用OnPdfClickedListener()方法,该对象将是pdf单击事件的侦听器/观察者(该对象已注册为观察者)。为了将事件发送到您的活动
,您需要调用活动
对象上的onPdfClicked
方法(这是一个OnPdfClickedListener
),这就是您需要传递活动引用的原因。在片段示例中,他们使用回调变量来防止NullPointerException
,因为片段的生命周期更复杂。这很有效,非常感谢!我仍然不明白为什么,但我还是要想一想:)@Ascorbin要发送事件(pdf单击),您将在类型为OnPdfClickedListener
的对象上调用OnPdfClickedListener()方法,该对象将是pdf单击事件的侦听器/观察者(该对象已注册为观察者)。为了将事件发送到您的活动
,您需要调用活动
对象上的onPdfClicked
方法(这是一个OnPdfClickedListener
),这就是您需要传递活动引用的原因。在片段示例中,他们使用回调变量来防止出现NullPointerException
,因为片段的生命周期更复杂。您是如何解决的???我也有同样的问题!我有一个适配器,我希望将单击元素的位置发送到调用适配器的片段!请帮帮我谢谢!你是怎么解决的???我也有同样的问题!我有一个适配器,我希望将单击元素的位置发送到调用适配器的片段!请帮帮我谢谢!