【问题标题】:Orientation change of multiple fragments in activity?活动中多个片段的方向变化?
【发布时间】:2019-09-13 08:38:51
【问题描述】:

FragmentA 正确响应 onConfigurationChanged,但如果我在其顶部打开 FragmentB 并旋转设备,它会触发 onConfigurationChanged 并触发 FragmentA 的 onConfigurationChanged。

我在活动中有fragmentA,FragmentA 在其中响应onConfigurationChanged 并在横向模式下打开另一个活动,如果单击FragmentA 列出其打开的详细信息片段,我们将其称为fragmentB。 fragmentB 也有方法 onConfigurationChanged 并以横向模式打开另一个活动。

FragmentA{


@Override
    public void onClick(View v) {
         //open FragmentB 
    }

public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {

       } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
          //landScape of FragmentA 
          //open any Activaty
        }

    }

FragmentB{

public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {

       } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
          //landScape of FragmentB
          //open any Activaty
        }

    }

fragmentB 上的方向更改导致打开两个活动。一个来自 fragmentA 的 onConfigurationChanged,另一个来自 onConfigurationChanged 片段B。

【问题讨论】:

  • 片段 A 和 B 是否在同一个活动中?如果是,最好处理来自活动的配置更改,并根据活动片段更改您对更改的响应。
  • 请参考这个solution使用可以使用setUserVisibleHint。
  • @RichardMcFriendOluwamuyiwa 是的,两个片段都在同一个活动中......但两者都在横向模式下打开不同的活动......所以我如何跟踪用户当前在哪个片段......并相应地打开其他活动..
  • @GovindSharma 这个解决方案对我不起作用......“setUserVisibleHint 适用于视图寻呼机,但不适用于常规片段容器。”这是该答案中的评论......我正在使用常规片段.
  • @bhavik-nathani 的解决方案会让您知道片段是否是 View/ViewGroup 对用户可见,但我建议您使用 FragmentManager 来执行此操作。如何执行此操作现在取决于您使用的是哪个FragmentManager,以及您是否使用fragment transactions

标签: java android android-studio


【解决方案1】:

试试这个方法来解决你的问题。

@Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser) {
            // Your code here
        } else {
            // Your code here
        }
    }

【讨论】:

  • setUserVisibleHint 适用于视图寻呼机,但不适用于常规片段容器。
猜你喜欢
  • 1970-01-01
  • 2012-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-08
相关资源
最近更新 更多