【问题标题】:Android How to go back to Activity B, which contains an ID from A, from Activity C?Android 如何从 Activity C 返回到 Activity B,其中包含来自 A 的 ID?
【发布时间】:2013-11-07 06:20:39
【问题描述】:

我有三项活动。活动 A 提供了组列表。当您单击一个组时,您将继续进行活动 B,传递所单击项目的组 ID,以便您可以查看该组的详细信息。当您在活动 B 上按下“添加”按钮时,您将继续进行活动 C。

使用操作栏的后退和/或向上按钮,我可以毫无问题地从活动 B 导航到活动 A。我可以重新加载 Activity A 的列表项。但是当我按下 Activity C 的操作栏的后退按钮转到 Activity B 时,会发生错误,因为从 Activity A 传递的组 ID 没有恢复。

请告诉我最好的做法是什么。我是新手。

PS:我知道有硬件后退按钮,但根据要求,需要操作栏中的后退按钮。

【问题讨论】:

  • 首先,您是否使用 NavUtils 进行导航?为什么在导航到活动 C 时要终止活动 B?
  • 您可以使用静态变量并将 id 设置为该变量并在活动中使用它
  • 您可以使用 StartActivityForResult() 函数来启动 Activity C

标签: android android-activity navigation android-actionbar


【解决方案1】:

当您从 Activity A 导航到 Activity B 再到 Activity C 时,您不需要终止 Activity。很可能,您正在终止 Activity,这就是从 Activity A 对该 groupId 的引用不再可用的原因.

【讨论】:

    【解决方案2】:

    我认为,您的意图是从 Activity C 到 B。通过这样做,您已经调用了 Activity B 的 onCreate 方法。所以我建议您在 Activity C 中列出此代码

    @Override
    public void onBackPressed() {
        finish();
    }
    

    【讨论】:

      【解决方案3】:

      当您按下操作栏中的后退按钮时,您是在创建新意图并推动活动。如果是这样,那么您必须将 id 传递给类。

      如果你调用finish()而不是在后退按钮的onClick监听器中创建意图,我认为恢复id不会有问题。

      【讨论】:

        【解决方案4】:

        在你的清单文件中使用这样的元数据标签,例如,

                 <activity ...>   
        
                    <meta-data
                    android:name="android.support.PARENT_ACTIVITY"
                    android:value="com.org.abc.board" />
        
                 </activity>
        

        【讨论】:

          猜你喜欢
          • 2016-01-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-08-19
          • 1970-01-01
          相关资源
          最近更新 更多