【问题标题】:PreferencesActivity with Fragment - how to determine user enter/left带有片段的首选项活动 - 如何确定用户进入/离开
【发布时间】:2015-09-01 04:09:04
【问题描述】:

我想确定用户是否在设置中。我有一个PreferencesActivity 和一个SettingsFragment

第一种方法是使用PreferencesActivityonResumeonPause 方法来做到这一点。问题是,如果我在设置的某些子项(例如 wlan 设置)上单击我的设置(PreferencesActivity),将调用 onPause 方法,但我仍在设置中并且没有离开它们。

是否有一些好的解决方案可以检测用户是否完全加入或离开了设置,而不仅仅是 PreferencesActivity?


另一个考虑是在从另一个活动调用时设置标志,但是你必须在每个调用设置的活动中这样做。

然后是如何确定用户何时离开设置的问题。我尝试使用 PreferencesACtivity 的 onBackPressed 方法,但是如果我在 SettingsFragment(设置子菜单)上单击返回并转到 PreferencesActivity(设置主菜单),也会调用此方法。

【问题讨论】:

  • 您是否尝试过使用 Fragment.isAdded() 或 Fragment.isInLayout()?或者FragmentManager看是否入栈?

标签: java android android-fragments android-activity android-preferences


【解决方案1】:

这样做。检查您的任何片段是否仍然可见并相应地进行处理

FragmentManager fragmentManager = YourActivity.this.getSupportFragmentManager();
List<Fragment> fragmentList = fragmentManager.getFragments();
if(fragment != null && fragment.isVisible()) {
    //user is still in settings or sub-settings
}else{
     //do something else
}

【讨论】:

  • 我必须在扩展 PreferenceActivity 的 PreferencesActivity 中使用您的代码。所以没有getSupportFragmentManager(),只有getFragmentManager()但是getFragmentManager()没有getFragments()方法
  • 就像你说的 getFragmentManager() 没有 getFragments() 方法。检查这个线程,我相信他们已经找到了解决方法,即,如果你还没有找到任何其他方法stackoverflow.com/questions/6102007/…
猜你喜欢
  • 2015-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多