【问题标题】:Android Navigate Back to Activity; Don't Reload ParentAndroid 导航回活动;不要重新加载父级
【发布时间】:2015-07-09 23:38:08
【问题描述】:

我有一个场景,我单击 ListFragment 并启动一个新的 Activity,如下所示:

public void onListItemClick(ListView l, View v, int position, long id) {

  super.onListItemClick(l, v, position, id);

  Intent intent = new Intent(getActivity(), VenueBeerActivity.class);
  Parcelable wrapped = Parcels.wrap(mAdapter.getItem(position));
  intent.putExtra("venue", wrapped);

  startActivity(intent);
}

这可以正常工作并显示新活动。

我已修改此活动清单,使其指向其父活动(在本例中为主活动)

但是我遇到的问题是当按下后退按钮时,它会重新加载整个父级。父级是一个列表,我不希望它重新加载用户位置。我怎样才能防止这种情况发生?

作为注释。父级包含一个 Page Tab Strip。

我确信这是一个相对简单的解决方法...

【问题讨论】:

  • 有人发布然后删除了他们的帖子..但这让我明白了我所需要的! android:launchMode="singleInstance"
  • 您的第一个活动可以在后台销毁,并且必须重新创建。你必须处理这个......

标签: android android-activity


【解决方案1】:

“返回按钮”是什么意思?它是工具栏中的向上按钮吗?如果是这种情况,请将VenueBeerActivity 中的onOptionsItemSelected 编辑为:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    switch (id) {
        case android.R.id.home:
            onBackPressed();
            return true;  
    }

    return super.onOptionsItemSelected(item);
}

因此,当用户按下向上按钮时,它将获得导航栏中后退按钮的行为。

【讨论】:

  • 这拯救了我的一天!使用 SimpleAdapter 时遇到了这个问题,看到了各种保存状态的答案,没有任何东西真的很好用,或者似乎有点矫枉过正。谢谢!
【解决方案2】:

在父活动中,将android:launchMode 属性设置为singleTop。这将阻止系统在按下向上按钮时创建新的父实例。

【讨论】:

  • 我用的是安卓导航,这个好像没解决问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多