In my project i use viewPager
for show some fragments
.
In one of fragments
i want click on button.
I write below codes but when click on button
not call onClickListener
and not show Toast
for me!
My codes in 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);
}
}
How can i fix this issue?
Why are you overriding setUserVisibleHint
to set up a click listener?
setUserVisibleHint
has nothing to do with toolbar buttons ... that method is for you to call to let the system know the fragment is not visible.
It's not normally called by the system, which is why your toast is never shown.
If the button you're trying to find is a toolbar item, you need to interact with it using the onCreateOptionsMenu and onOptionsItemSelected methods instead.
@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 } } }
Then, if you only want to interact with this button when this fragment is active, you can show and hide it in onStart() and onStop, respectively.
@Override public void onStart() { super.onStart(); list_item.setVisibility(View.VISIBLE); } @Override public void onStop() { super.onStop(); list_item.setVisibility(View.GONE); }
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.