【发布时间】:2019-01-23 10:42:36
【问题描述】:
我正在尝试在片段的 onResume 方法中收听点击事件。我的 viewpager 中有两个片段,如果我在两个片段中都使用 onResume,则只有其中一个在工作,而另一个不工作。以下是我正在做的事情。
片段 1
public void onResume() {
super.onResume();
adapter.setOnItemClickListener(new catAdapterBlack.MyClickListener() {
@Override
public void onItemClick(String position, int pos, int posi, View v) {
... doing some stuff...
}
});
subAdapter.setOnItemClickListener(new subcatAdapter.MyClickListener() {
@Override
public void onItemClick(String position, int pos, View v) {
... doing some stuff...
});
}
片段 2
public void onResume() {
super.onResume();
adapter.setOnItemClickListener(new catAdapterBlack.MyClickListener() {
@Override
public void onItemClick(String position, int pos, int posi, View v) {
... doing some stuff...
}
});
subAdapter.setOnItemClickListener(new subcatAdapter.MyClickListener() {
@Override
public void onItemClick(String position, int pos, View v) {
... doing some stuff...
});
}
我在两个片段中使用相同的适配器。
现在当我在这里搜索时,我在下面找到了这个解决方案,但它也不起作用。当我打开我的第一个片段时,应用程序崩溃并在空对象引用上调用 MyClickListener 时出错。到目前为止,我已经尝试了所有方法。我尝试在第一个片段中调用 onresume 并在片段二中调用以下 (setUserVisibleHint) 解决方案。但是当应用程序没有以这种方式崩溃时,它再次不起作用。我想在两个片段中调用 Myclicklistener。
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser) {
init();
} else {
}
}
【问题讨论】:
-
你在哪里初始化你的适配器?
-
在我从片段的 onCreateView 调用的方法中
-
对不起,我刚刚检查了我已经在 onCreateView 中初始化了适配器,后来调用了我将项目添加到列表中并通知适配器更改的方法
-
在你初始化你的适配器后,你可以调用
setOnItemClickListener,不需要在回调onresume中设置监听器。目前还不太清楚您要做什么以及有什么问题
标签: android android-fragments android-viewpager fragment