作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的项目中,我使用viewPager
来显示一些 fragment
。
在其中一个 fragment
中,我想要点击按钮。
我写了下面的代码,但是当 click button
不调用 onClickListener
并且不为我显示 Toast
时!
我的 fragment 代码:
@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
与工具栏按钮无关...该方法供
您调用以让系统知道 fragment 不可见。它通常不会被系统调用,这就是为什么您的 toast 永远不会显示的原因。
如果您要查找的按钮是工具栏项,您需要使用 onCreateOptionsMenu 与其进行交互和 onOptionsItemSelected方法代替。
@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
}
}
}
然后,如果您只想在该 fragment 处于 Activity 状态时与该按钮进行交互,则可以分别在 onStart() 和 onStop 中显示和隐藏它。
@Override
public void onStart() {
super.onStart();
list_item.setVisibility(View.VISIBLE);
}
@Override
public void onStop() {
super.onStop();
list_item.setVisibility(View.GONE);
}
关于java - 如何在 fragment 中使用 onClickListener 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47959191/
我是一名优秀的程序员,十分优秀!