在我的项目中,我使用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与工具栏按钮无关...该方法供您调用以使系统知道片段不可见。系统通常不会调用它,这就是为什么从不显示您的吐司的原因。

如果您要查找的按钮是工具栏项,则需要使用onCreateOptionsMenuonOptionsItemSelected方法与其交互。

这是一种在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);
}

10-08 03:33