单击上一个按钮时,在片段中保留edittext的值

时间:2019-12-11 08:48:10

标签: android android-fragments fragment

我的Android应用程序有BottomNavigationBar。它包含5个片段。其片段之一包含嵌套片段,该片段是多步过程。

第一个嵌套的片段包含下一个按钮。第二个嵌套的片段包含上一个和下一个按钮。第三个嵌套的片段包含上一个和提交按钮。每个片段都有不同的EditText

在第一个片段中添加值之后,当我单击下一步按钮时,它将转到第二个片段。在第二个片段中,当我单击上一个按钮时,它将再次转到第一个片段,并且相同的过程适用于第二个和第三个片段

我的问题是:

1)当单击第二个片段中的上一个按钮时,我希望原样保留第一个片段中的EditText的所有值,当再次单击第一个片段中的下一个按钮时,我想要所有{{ 1}}保留在第二个片段中。有什么办法吗?

2)我希望在用户单击第三个片段中的“提交”按钮时所有嵌套片段的所有EditText值。该怎么做?

3 个答案:

答案 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);

对于传递的结果,每当按下下一个或上一个按钮时,您都可以将分发包传达给其父活动,并在按下提交时随意进行处理。从docsthis answer了解有关如何操作的更多信息

答案 2 :(得分:0)

第一个问题的解决方案。

我使用了popBackStack()的{​​{1}}方法。我可以使用它返回上一个堆栈片段。我已在上一个按钮的FragmentManager中添加了此代码

OnClickListener

第二个问题的解决方案:

使用方法setArguments()设置值,并使用getArguments()获取值