Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有片段的Android活动,findFragment始终返回null_Android_Android Fragments_Fragmentpageradapter - Fatal编程技术网

带有片段的Android活动,findFragment始终返回null

带有片段的Android活动,findFragment始终返回null,android,android-fragments,fragmentpageradapter,Android,Android Fragments,Fragmentpageradapter,我正在使用一个活动和3个片段以及一个ViewPager和一个FragmentPagerAdapter处理Android应用程序。 应用程序工作正常,但我仍然无法检索活动中片段的引用。 findFragmentById和findFragmentbyTag方法始终返回null。 这是我的密码: 碎片页雷达: import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import and

我正在使用一个活动和3个片段以及一个ViewPager和一个FragmentPagerAdapter处理Android应用程序。 应用程序工作正常,但我仍然无法检索活动中片段的引用。 findFragmentById和findFragmentbyTag方法始终返回null。 这是我的密码: 碎片页雷达:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

public class ViewPagerAdapter extends FragmentPagerAdapter {

    final int PAGE_COUNT = 3;

    public ViewPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount() {
        return PAGE_COUNT;
    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {

            // Open FragmentTab1.java
            case 0:
                FragmentTab1 fragmenttab1 = new FragmentTab1();
                return fragmenttab1;

            // Open FragmentTab2.java
            case 1:
                FragmentTab2 fragmenttab2 = new FragmentTab2();
                return fragmenttab2;

            // Open FragmentTab3.java
            case 2:
                FragmentTab3 fragmenttab3 = new FragmentTab3();
                return fragmenttab3;
        }
        return null;
    }
}
片段实现:

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.support.v4.app.Fragment;

public class FragmentTab1 extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Get the view from fragmenttab1.xml
        View view = inflater.inflate(R.layout.fragmenttab1, container, false);
        return view;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
    }
}
最后是我的活动:

import android.support.v4.app.FragmentActivity;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.os.Bundle;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Get the view from activity_main.xml
        setContentView(R.layout.activity_main);

        // Locate the viewpager in activity_main.xml
        viewPager = (ViewPager) findViewById(R.id.pager);
        viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());

        // Set the ViewPagerAdapter into ViewPager
        viewPager.setAdapter(viewPagerAdapter);
    }

    @Override
    protected void onStart()
    {
        super.onStart();
        InitializeVariables();
        viewPager.setCurrentItem(1);
        Fragment fragment = (Fragment)getSupportFragmentManager().findFragmentByTag(makeFragmentName(viewPager.getId(), 0));  
    }

viewPager.getItem(1)
,尝试使用它使用
findFragmentByTag
,并确保所有片段都已标记。对于
findFragmentByTag
,由于没有为片段设置标记(或者至少我们不知道,因为您没有发布xml布局),因此获得null是正常的。我认为这也适用于
findFragmentById
。。。