我的Android应用程序有BottomNavigationBar
。它包含5个片段。其片段之一包含嵌套片段,该片段是多步过程。
第一个嵌套的片段包含下一个按钮。第二个嵌套的片段包含上一个和下一个按钮。第三个嵌套的片段包含上一个和提交按钮。每个片段都有不同的EditText
。
在第一个片段中添加值之后,当我单击下一步按钮时,它将转到第二个片段。在第二个片段中,当我单击上一个按钮时,它将再次转到第一个片段,并且相同的过程适用于第二个和第三个片段
我的问题是:
1)当单击第二个片段中的上一个按钮时,我希望原样保留第一个片段中的EditText
的所有值,当再次单击第一个片段中的下一个按钮时,我想要所有{{ 1}}保留在第二个片段中。有什么办法吗?
2)我希望在用户单击第三个片段中的“提交”按钮时所有嵌套片段的所有EditText
值。该怎么做?
答案 0 :(得分:0)
是的
这可以通过两种方法来实现,
1)片段savedInstanceState
https://stackoverflow.com/a/17135346/7316675
2)将您的值存储在某些活动或应用程序级别,并在片段屏幕的简历上访问它
答案 1 :(得分:0)
您可以使用Bundle
存储值,然后在还原片段时将其还原。您可以在onStop()
(推荐)或onPause()
中进行此操作。
Private static final String KEY_ADDRESS = "ADDRESS" ;
@Override
Public void onstop(){
Bundles state = new Bundle ();
String address = etv1.getText().toString();
// Get more strings from the etvs
state.putString(KEY_ADDRESS, address);
// Store more strings into the bundle
setInitialSavedState(state)
}
要恢复值,您可以使用已保存的实例状态,系统将其传递给onCreate()
,或者将该捆绑包传递到onCreate()
中一个自己创建的公共捆绑包中,然后像这样在onResume()
中进行访问:
String address = bundle.getString(KEY_ADDRESS);
对于传递的结果,每当按下下一个或上一个按钮时,您都可以将分发包传达给其父活动,并在按下提交时随意进行处理。从docs或this answer了解有关如何操作的更多信息
答案 2 :(得分:0)
第一个问题的解决方案。
我使用了popBackStack()
的{{1}}方法。我可以使用它返回上一个堆栈片段。我已在上一个按钮的FragmentManager
中添加了此代码
OnClickListener
第二个问题的解决方案:
使用方法setArguments()设置值,并使用getArguments()获取值