我正在尝试监听片段的onResume方法内的click事件。我的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 {
}
}
答案 0 :(得分:0)
设置适配器后,从onResume
中的onCreateView
中移出代码。
答案 1 :(得分:0)
这将起作用:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser) {
// Here you need to check if your adapter is not null and initialize your adapters again
} else {
}
}
您需要做的只是检查适配器是否不为空,您可能需要再次初始化适配器。