在我的项目中,我使用viewPager
来显示一些fragments
。
我要在fragments
之一中单击按钮。
我写下面的代码,但是当单击button
时不调用onClickListener
并且不为我显示Toast
!
我的代码片段:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser){
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
list_item = getActivity().findViewById(R.id.list_item);
list_item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (clickFlag) {
AuctionTodayListAdapter adapter = new AuctionTodayListAdapter(getActivity(), R.layout.list_item_auction_large_new, Constants.auction.getToday());
list.setAdapter(adapter);
clickFlag = false;
list_item.setImageResource(R.drawable.list_icon);
Toast.makeText(context, ""+clickFlag, Toast.LENGTH_SHORT).show();
} else {
AuctionTodayListAdapter adapter = new AuctionTodayListAdapter(getActivity(), R.layout.list_item_auction_normal_soon, Constants.auction.getToday());
list.setAdapter(adapter);
clickFlag = true;
list_item.setImageResource(R.drawable.list);
Toast.makeText(context, ""+clickFlag, Toast.LENGTH_SHORT).show();
}
}
});
}
}, 50);
}
}
我该如何解决这个问题?
最佳答案
为什么要覆盖setUserVisibleHint
来设置点击监听器?
更新:setUserVisibleHint
与工具栏按钮无关...该方法供您调用以使系统知道片段不可见。系统通常不会调用它,这就是为什么从不显示您的吐司的原因。
如果您要查找的按钮是工具栏项,则需要使用onCreateOptionsMenu和onOptionsItemSelected方法与其交互。
这是一种在onCreateView中执行的操作:
@Override
View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = // inflate view from layout resource
list_item = getActivity().findViewById(R.id.list_item); // Get toolbar item
list_item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Do you click stuff
}
}
}
然后,如果只想在此片段处于活动状态时与该按钮交互,则可以分别在onStart()和onStop中显示和隐藏它。
@Override
public void onStart() {
super.onStart();
list_item.setVisibility(View.VISIBLE);
}
@Override
public void onStop() {
super.onStop();
list_item.setVisibility(View.GONE);
}