如何在片段中使用onClickListener方法?

时间:2017-12-24 08:33:34

标签: java android android-fragments

在我的项目中,我使用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);
    }
}

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

为什么要覆盖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);
}