如何在Android中一次只将一个选项卡加载到内存中?

时间:2014-03-08 07:34:33

标签: android memory-management android-fragments tabs android-actionbar

我正在使用CustomPagerAdapter创建一个可由ActionBar标签或水平滑动控制的应用程序。选择选项卡时,屏幕上会显示与该选项卡对应的fragment。创建应用程序并选择任何选项卡时,相邻选项卡,片段将加载到内存中。我不希望这种情况发生。我希望这样,当选择一个选项卡时,只有选定选项卡的fragment被加载到内存中。有没有办法做到这一点?

编辑:我目前遇到问题的代码如下:

public class fragA extende Fragment
{
    private VideoView videoViewA;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        View rootView = inflater.inflate(R.layout.fragment_A, container, false);

        videoViewA = (VideoView) rootView.findViewById(R.id.videoViewA);

        return rootView;
    }

    @Override
    public void setUserVisibleHint(final boolean isVisibleToUser)
    {
        super.setUserVisibleHint(isVisibleToUser)
        if (isVisibleToUser)
        {
            videoViewA.setVideoURI(LINK);
            videoViewA.start();
        }
        else
        {
            videoViewA.stopPlayback();
        }
    }
}

我收到的错误是在videoViewA.setVideoURI(LINK);线。请注意,链接实际上存在,但出于隐私原因,我无法发布。

编辑2:它是ajava.lang.NullPointerException。

编辑3:对不起,但我正在努力做到这一点。代码现在反映了我实际写的内容。

1 个答案:

答案 0 :(得分:1)

尝试在setUserVisbleHint()中加载视频,在显示片段时,FragmentPageAdapter会触发该视频。 http://developer.android.com/reference/android/support/v4/app/Fragment.html#setUserVisibleHint(boolean)

如果这对您不起作用,您还可以尝试检查onHiddenChanged(布尔值隐藏)。 http://developer.android.com/reference/android/app/Fragment.html#onHiddenChanged(boolean)