Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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 片段导航问题。单击我的第二个片段,它仍然显示我的第一个片段选项卡_Android_Android Fragments - Fatal编程技术网

Android 片段导航问题。单击我的第二个片段,它仍然显示我的第一个片段选项卡

Android 片段导航问题。单击我的第二个片段,它仍然显示我的第一个片段选项卡,android,android-fragments,Android,Android Fragments,我正在尝试一个片段导航抽屉,一切正常,但问题是我不想在我的第二个片段上有一个片段工厂 我真的很感谢你的帮助。谢谢大家! 我会留下一个结果的图像,以便更容易理解我的意思 Homepage.java public class Homepage extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { private static final String TAG = "Homep

我正在尝试一个片段导航抽屉,一切正常,但问题是我不想在我的第二个片段上有一个片段工厂

我真的很感谢你的帮助。谢谢大家!

我会留下一个结果的图像,以便更容易理解我的意思

Homepage.java

public class Homepage extends AppCompatActivity implements 
NavigationView.OnNavigationItemSelectedListener {

private static final String TAG = "Homepage";

private SectionsPageAdapter mSectionsPageAdapter;

private ViewPager mViewPager;

private DrawerLayout drawer;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_homepage);

    mSectionsPageAdapter = new 
SectionsPageAdapter(getSupportFragmentManager());

    // Set up the ViewPager with the sections adapter.
    mViewPager = (ViewPager) findViewById(R.id.viewpagers);
    setupViewPager(mViewPager);
    Log.i("viewpager",mViewPager.toString());
    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(mViewPager);


    Toolbar toolbar = findViewById(R.id.toolbar);

    drawer = findViewById(R.id.drawer_layout);
    NavigationView navigationview = findViewById(R.id.nav_view);
    navigationview.setNavigationItemSelectedListener(this);

    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, 
 toolbar,
            R.string.navigation_drawer_open, 
 R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();

    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                new HomeFragment()).commit();
        navigationview.setCheckedItem(R.id.nav_home);
    }

}

private void setupViewPager(ViewPager viewPager) {
    SectionsPageAdapter adapter = new SectionsPageAdapter(getSupportFragmentManager());
    adapter.addFragment(new FragmentPopular(), "Popular");
    adapter.addFragment(new FragmentUpcoming(), "Upcoming");
    Log.i("adaptaerrrrr",adapter.toString());
    viewPager.setAdapter(adapter);
}


@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
    Fragment fragment = null;
    switch (menuItem.getItemId()) {
        case R.id.nav_home:
            fragment = new HomeFragment();
            break;
        case R.id.nav_profile:
            fragment = new ProfileFragment();
            break;
        case R.id.nav_discussion:
            fragment = new DiscussionFragment();
            break;
    }
    getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment).commit();
    drawer.closeDrawer(GravityCompat.START);

    return true;
}

@Override
public void onBackPressed() {
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
    }
    super.onBackPressed();
}


}
SectionsPageAdapter.java

public class SectionsPageAdapter extends FragmentPagerAdapter {

private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();

public void addFragment(Fragment fm, String title) {
    mFragmentList.add(fm);
    mFragmentTitleList.add(title);
}

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

@Override
public Fragment getItem(int position) {
    return mFragmentList.get(position);
}

@Override
public CharSequence getPageTitle(int position) {

    switch (position) {
        case 0:
            return "Popular Games";
        case 1 :
            return "Upcoming Games";
    }
    return null;
}
@Override
public int getCount() {
    return mFragmentList.size();
}
}
fragment_profile.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FFF"
android:clickable="true">


<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text ="Profile Fragment"
    android:textSize="30sp"
    android:layout_centerInParent="true"/>



 </RelativeLayout>

在onNavigationItemSelectedMethod中的break语句之前粘贴此代码


初始化片段变量后,必须将片段附加到“活动”。

请确保使用的是正确的菜单项id,并使用日志检查程序流。这将使您很容易找到问题。您能上传到github以便我们进行测试吗?我也面临同样的问题,我已经编写了一个主片段父视图单击侦听器并更改其背景颜色,问题得到了解决。
public class ProfileFragment extends Fragment {

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable 
ViewGroup container, @Nullable Bundle savedInstanceState) {

    return inflater.inflate(R.layout.fragment_profile, container, false);


}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FFF"
android:clickable="true">


<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text ="Profile Fragment"
    android:textSize="30sp"
    android:layout_centerInParent="true"/>



 </RelativeLayout>
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,fragment).commit();