18

我需要知道我的片段何时可​​见,我正在使用 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();
    }
}

我正在运行 API 级别 19,并在我的 AndroidManifest 上设置了最低 API 级别 15。要获得 setUserVisibleHint,还有其他事情要做吗,我做错了什么?

4

2 回答 2

19

setUserVisibleHint 是可用的,因此当您执行一些专门隐藏它的花哨的片段事务时,您可以告诉系统片段实际上是不可见的,而不是相反。您不能使用它来确定可见性,它默认为 true。

您应该使用 isVisible 调用来了解片段是否可见,并使用片段或根视图类的 onAttach 来在它附加到活动或相应的根视图时获取回调。

于 2014-03-12T05:56:28.050 回答
18
setUserVisibleHint() 

仅适用于FragmentPagerAdapter。请参考Fragment.setUserVisibleHint() 是否被android系统调用?

于 2016-03-02T02:46:06.223 回答