首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >片段管理和导航(交付应用程序)

片段管理和导航(交付应用程序)
EN

Stack Overflow用户
提问于 2015-07-29 16:50:51
回答 1查看 278关注 0票数 1

我正在尝试构建一个交付应用程序。我有一份可供选择的产品清单。在用户选择了一个产品之后,他就会被引导到一系列的阶段来定义某个产品的附加条件和选项。

产品清单:

然后,假设有人点击其中一个产品,我们转到控制器FragmentActivity:

页面顶部的小计和底部的按钮属于片段活动。然后我把一组单选按钮放在中心布局上。到现在为止一切都很好。单击按钮引线以替换片段:

到现在为止一切都很美好。我可以通过片段访问按钮和小计。但是,如果我按下设备上的back按钮,它会使我回到产品列表,而不是前面的片段。即使我能回到以前的片段,它也会失去无线电按钮的选择。

然后下一个片段是对产品及其附加部分的计算:

当我按下按钮时,我只需在片段中使用finish(),它将我带回到我想要的产品列表。然而,我需要知道,我是从那里的产品清单,以便我可以把该产品添加到购物车,正在建设的送货订单。

我在使用片段方面真的很新,但我可以很好地传递参数。我挣扎的是通过控制片段的FragmentActivity来控制片段的导航。此外,我正在努力保持片段的状态(记住用户输入)。最后,我需要回到正在构建的项目的产品列表,以便将其添加到购物车中。

我往正确的方向走吗?我如何实现这些特性(导航,片段状态,返回到以前的活动与一些数据,因为我只是使用finish()),非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-29 17:04:45

您可以在片段之间导航,只需将它们添加到后台堆栈中,如下所示:

代码语言:javascript
复制
// Works with either the framework FragmentManager or the
// support package FragmentManager (getSupportFragmentManager).
getSupportFragmentManager().beginTransaction()
                           .add(detailFragment, "detail")
                           // Add this transaction to the back stack
                           .addToBackStack()
                           .commit();

这样,当您单击“后退”按钮时,它将不会从堆栈加载之前的活动,而是加载已添加到后台的前一个片段。您可以在这里找到更多详细信息:http://developer.android.com/training/implementing-navigation/temporal.html

对要保存和检索数据的每个片段使用onSaveInstanceState(Bundle savedInstanceState)和onActivityCreated(Bundle savedInstanceState)。然后做以下工作:

代码语言:javascript
复制
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    if (savedInstanceState != null) {
        //Restore the fragment's state here
        String yourString  = savedInstanceState.getString("key");
    }
}

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    //save whatever you want into the bundle
    savedInstanceState.putString("key", "your_value");
    // Always call the superclass so it can save the view hierarchy state
    super.onSaveInstanceState(savedInstanceState);
}

你可以把你想要的任何东西都放进包里。从Strings到Parcelable和系列化。更多信息在这里:http://developer.android.com/reference/android/os/Bundle.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31706545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档