Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.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
Java 保存碎片以免被破坏或隐藏,并更改徽章编号_Java_Android_Mysql_Android Volley - Fatal编程技术网

Java 保存碎片以免被破坏或隐藏,并更改徽章编号

Java 保存碎片以免被破坏或隐藏,并更改徽章编号,java,android,mysql,android-volley,Java,Android,Mysql,Android Volley,我有一个主要活动,当我改变方向时,我加载了两个片段,当前片段被销毁,默认片段被加载,我还想从片段中更改徽章编号,但我不知道如何做。请帮我保存碎片的状态 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar; toolbar = (T

我有一个主要活动,当我改变方向时,我加载了两个片段,当前片段被销毁,默认片段被加载,我还想从片段中更改徽章编号,但我不知道如何做。请帮我保存碎片的状态

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar;
    toolbar = (Toolbar) findViewById(R.id.my_nav_bar);

    toolbar.setTitleTextColor(getResources().getColor(R.color.text_white));
    setSupportActionBar(toolbar);


    navigationView = findViewById(R.id.mynavigation);
    drawerLayout = findViewById(R.id.mydrawer);
    actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open, R.string.close);
    drawerLayout.addDrawerListener(actionBarDrawerToggle);
    actionBarDrawerToggle.syncState();
    bottomNavigationView = findViewById(R.id.my_bottom_menu);
    badgeDrawable = bottomNavigationView.getOrCreateBadge(R.id.cart);

    badgeDrawable.setNumber(cartitems);


    bottomNavigationView.setSelectedItemId(R.id.home);


    fragmentManager.beginTransaction().replace(R.id.mycontainer, new home()).commit();
    bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.home:

                    fragmentManager.beginTransaction().replace(R.id.mycontainer, new home()).addToBackStack(null).commit();
                    break;
                case R.id.order:

                    fragmentManager.beginTransaction().replace(R.id.mycontainer, new order()).addToBackStack(null).commit();
                    break;
                case R.id.cart:
                    fragmentManager.beginTransaction().replace(R.id.mycontainer, new Cart()).addToBackStack(null).commit();

                    break;

            }
            return true;
        }
    });
}

根据:

请注意,片段事务仅在
savedInstanceState
null
时创建。这是为了确保在首次创建活动时只添加一次片段。当发生配置更改并重新创建活动时,
savedInstanceState
不再为
null
,并且不需要再次添加片段,因为片段将从
savedInstanceState
自动还原

因此,如果(savedInstanceState==null),则需要在
中包装设置初始状态的所有调用:

请注意,同一指南还解释了如何执行此操作,它可以为您执行相同的操作,并允许您将
beginTransaction
onCreate()
中完全删除:

<androidx.fragment.app.FragmentContainerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mycontainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:name=".home" />

谢谢@ianhanniballake。它起作用了
<androidx.fragment.app.FragmentContainerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mycontainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:name=".home" />