猿问

如何切换到另一个活动以及更改该活动中的片段?

我有一个带有 3 个不同 Fragment 的 main_activity 和一个SlideActivity. 我可以在我的MainActivity.


现在我在 中添加 1 个按钮,MainActivity它将打开SlideActivity. 在SlideActivity导航栏中,有 3 个按钮可以切换到我已经创建的每个不同的片段。


问题是当我单击导航中的列表按钮时,出现错误表明


未找到片段 fragment_main{e1acaf7 #0 id=0x7f080052} 的 id 0x7f080052 (com.example.learnfragment:id/fragment_container) 的视图


似乎它无法找到FrameLayoutIDR.id.并且我相信因为导航按钮在 中SlideActivity并且它找不到在MainActivity.


但是我应该怎么做才能切换回MainActivity以及更改不同的片段?


这是navigation_slide_activity.xml


<include

    layout="@layout/app_bar_slide"

    android:layout_width="match_parent"

    android:layout_height="match_parent" />


<android.support.design.widget.NavigationView

    android:id="@+id/nav_view"

    android:layout_width="wrap_content"

    android:layout_height="match_parent"

    android:layout_gravity="start"

    android:fitsSystemWindows="true"

    app:headerLayout="@layout/nav_header_slide"

    app:menu="@menu/activity_slide_drawer" />

Navigation_Slide_Activity.java:_


public boolean onNavigationItemSelected(MenuItem item) {

    // Handle navigation view item clicks here.

    int id = item.getItemId();


    if (id == R.id.nav_home) {

        // Navigate back to the Main Fragment

        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

        ft.replace(R.id.fragment_container, new fragment_main());

        ft.commit();

    }

}

和main_activity.xml:


<FrameLayout

    android:id="@+id/fragment_container"

    android:layout_width="392dp"

    android:layout_height="496dp"

    android:layout_marginStart="8dp"

    android:layout_marginTop="8dp" />

最后,MainActivity.java


protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);


    // Create Fragment

    if(savedInstanceState == null){

        getSupportFragmentManager().beginTransaction().add(

                R.id.fragment_container,

                new fragment_main()).commit();

    }

}


慕妹3146593
浏览 163回答 1
1回答

慕森王

public static在你的MainActivity.public static int FRAGMENT_TO_BE_LOADED = 0;现在从 中SlideActivity,将变量设置为一个数字(例如 3,即当您返回到您的MainActivity.public boolean onNavigationItemSelected(MenuItem item) {&nbsp; &nbsp; // Handle navigation view item clicks here.&nbsp; &nbsp; int id = item.getItemId();&nbsp; &nbsp; if (id == R.id.nav_home) {&nbsp; &nbsp; &nbsp; &nbsp; MainActivity.FRAGMENT_TO_BE_LOADED = 3;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; finish();&nbsp; &nbsp; }}现在在你的 中MainActivity,你需要有一个onResume函数来检查变量并相应地加载片段。@Overrideprotected void onResume() {&nbsp; &nbsp; super.onResume();&nbsp; &nbsp; if(FRAGMENT_TO_BE_LOADED == 1) loadFragment1();&nbsp; &nbsp; else if(FRAGMENT_TO_BE_LOADED == 2) loadFragment2();&nbsp; &nbsp; else if(FRAGMENT_TO_BE_LOADED == 3) loadFragment3();}希望能解决您的问题。
随时随地看视频慕课网APP

相关分类

Java
我要回答