当前位置: 首页 > 知识库问答 >
问题:

在取向改变后保留当前可见碎片

裘嘉树
2023-03-14
if (savedInstanceState == null) {
            mFragment = new Fragment1();
            showFragment(mFragment, FRAGMENT1_TAG);
        } else {
            String tag = savedInstanceState.getString(CURRENT_FRAGMENT_TAG);
            mFragment = mFragmentManager.findFragmentByTag(tag);

            if (mFragment != null)
                mFragmentManager.beginTransaction().replace(R.id.content_frame, mFragment, tag).commit();
            else
                Toast.makeText(getBaseContext(), "Something went wrong, please restart application", Toast.LENGTH_SHORT).show();
        }
String fragmentTag = mFragmentManager.findFragmentById(R.id.content_frame).getTag();
        dataOut.putString(CURRENT_FRAGMENT_TAG, fragmentTag);
 public static void showFragment(Fragment fragment, String tag) {
        mFragmentTag = tag;

        FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.content_frame, fragment, mFragmentTag);
        fragmentTransaction.addToBackStack(null);
        fragmentTransaction.commit();
    }

共有1个答案

方安怡
2023-03-14

在包中保留您的片段的类的名称。

然后使用static方法实例化,用类的名称重新创建片段。

String name = savedInstanceState.getString(CURRENT_FRAGMENT_TAG);
Fragment fragment = Fragment.instantiate (Activity.this, "com.example." + name);

该方法需要全名(包括包)。

 类似资料:
  • 所以我正在用Visual Studio编写一个Android应用程序。我想要一个既有纵向又有横向的活动。当我打开我的设备时,我的活动中的数据消失了。所以我在网上查了一下,找到了一行放在清单中的数据,这很有效!Android:config changes = " orientation | keyboard hidden | screen size "除了我所有的视图都是无序的、错位的。我使用了两种

  • 我有一个,当用户浏览应用程序时,我将当前片段替换为用户选择的片段,并添加将交易添加到背包。一切正常,用户可以通过按下返回按钮返回到以前的片段。 当设备方向改变时会出现问题:假设用户看到的第一个片段是A,然后他导航到B,并从B导航到C。在横向模式下,可以更好地欣赏C中的内容,并且C有一个特殊的横向布局,因此用户旋转设备。我希望用户使用C语言进行新的定位。相反,用户看到的是景观。现在他需要再次从A导航

  • 我正在编写一个函数来展平嵌套数组(Python)。例如将[1,2,[3]]变成[1,2,3],[[1,2,[3]],4]变成[1,2,3,4]等。 我有以下内容: 所以这个想法是让函数是递归的,以处理嵌套到未知深度的情况。我的问题是每次遇到嵌套列表都会被重新初始化(当被递归调用时)。 在进行递归调用时,如何保持展平数组的状态?

  • 我正在开发一个应用程序,基本上有一个行动栏。当我的应用程序启动时,活动创建片段并将它们附加到每个标签上,所以当我切换时,我会得到不同的视图。 当我试图旋转设备时,问题就出现了。经过一番挣扎,我注意到Android会像这样自动重新创建之前添加的片段:

  • 我所拥有的 我不能使用onResume(),因为左边和右边的片段已经创建了。我不能使用setUserVisibilityHint(),因为它是在onCreateView()之前调用的,所以视图还没有准备好。 那么,当某个特定片段对用户可见时,应该采用什么方法来动画视图呢?

  • 但只有在改变方位之后。如果我只是选择一个不同的片段,然后改变方向,然后再改变方向,它工作得很好,就像我想要的那样,停留在同一个片段上,但是当我再次尝试改变片段时,我会得到那个错误。