Android setUserVisibleHint永远不会被调用?

lis*_*aro 16 android android-fragments fragmentstatepageradapter

我需要知道我的片段何时可​​见,我正在使用setMenuVisibility但我现在知道它不是一个好选择.我正在尝试在FragmentStatePagerAdapter片段上实现setUserVisibleHint,但它永远不会被调用.

import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;


public class Contacts extends Fragment {
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            View view = inflater.inflate(R.layout.fragment_screen_contacts, container, false);
            return view;
        }


    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        Log.d("MyFragment", "This never shows up.");
        Toast.makeText(getActivity(), "Neither does this", Toast.LENGTH_LONG).show();
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在运行API级别19,并在我的AndroidManifest上设置了最低API级别15.有什么办法可以获得setUserVisibleHint,我做错了什么?

Ben*_*ein 19

setUserVisibleHint是可用的,这样你就可以告诉系统片段实际上是不可见的,而不是相反,当你做一些专门隐藏它的奇特片段事务时.您不能使用它来确定可见性,它默认为true.

您应该使用isVisible调用来了解片段是否可见以及片段的onAttach或根视图类,以便在将其附加到活动或相应的根视图时获得回调.


Bru*_*eDu 17

setUserVisibleHint() 
Run Code Online (Sandbox Code Playgroud)

仅适用于FragmentPagerAdapter.请参考由android系统调用的Is Fragment.setUserVisibleHint()?

  • 它也适用于`FragmentStatePagerAdapter`. (2认同)