为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕妹3146593 2022-11-02 17:19:42
我有一个带有 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.javaprotected 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();    }}
查看完整描述

1 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

public static在你的MainActivity.


public static int FRAGMENT_TO_BE_LOADED = 0;

现在从 中SlideActivity,将变量设置为一个数字(例如 3,即当您返回到您的MainActivity.


public boolean onNavigationItemSelected(MenuItem item) {

    // Handle navigation view item clicks here.

    int id = item.getItemId();


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

        MainActivity.FRAGMENT_TO_BE_LOADED = 3; 

        finish();

    }

}

现在在你的 中MainActivity,你需要有一个onResume函数来检查变量并相应地加载片段。


@Override

protected void onResume() {

    super.onResume();


    if(FRAGMENT_TO_BE_LOADED == 1) loadFragment1();

    else if(FRAGMENT_TO_BE_LOADED == 2) loadFragment2();

    else if(FRAGMENT_TO_BE_LOADED == 3) loadFragment3();

}

希望能解决您的问题。


查看完整回答
反对 回复 2022-11-02
  • 1 回答
  • 0 关注
  • 162 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号