Android 安卓:更好的碎片使用方式
我想不出更好的问题标题:( 在我的应用程序中,我需要一个类似提问者的东西,有10多个问题,每次1个问题 我所做的是:Android 安卓:更好的碎片使用方式,android,android-fragments,Android,Android Fragments,我想不出更好的问题标题:( 在我的应用程序中,我需要一个类似提问者的东西,有10多个问题,每次1个问题 我所做的是: 让1个活动(比如MainActivity)在其onCreate()中以编程方式添加一个片段(比如Frag_1) 在Frag_1中,我有一个界面onButtonClickedListener,其中有一个方法onClicked,以获取对活动的回调,以了解单击了哪个选项等 在MainActivity中实现了这个接口的onclick方法,在该方法中,我将片段更改为Frag_2(第二个问题
onButtonClickedListener
,其中有一个方法onClicked
,以获取对活动的回调,以了解单击了哪个选项等 @Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("curChoice", mCurCheckPosition);
}
每个问题都不相同。问题的答案选项是EditText/Spinner/RadioButtons等,因此我不能使用相同的片段,而只是更改问题和答案选项文本
有没有更好更有效的方法来解决这个问题
谢谢你你就快到了。
为要实现的MainActivity创建更广泛/通用的接口。
可能是这样的public void fragClickCallback(int fragId,Bundle data);
这样,在您的实现中,您可以创建一个switch()case
,以了解问题的来源,并且您的包可以为不同类型的答案打包不同的键(int表示Radio按钮/微调器,String表示开放式答案,等等)
并且确保在每个片段事务上使用.replace(…)
删除之前的片段
编辑
此外,有一些聪明的方法可以构建片段,而不必创建数十亿个片段。可以有多少不同类型的问题?让我们计算一下:
- 多项选择(单答案)->整数(索引)
- 多项选择(多个答案)->整数(标志)
- 数字输入->浮动/双精度
- 编辑文本->字符串
- 日期选择器->长(历元)
- 时间选择器->3个整数(?)
switch语句的方法,现在只需将正确的参数传递给片段
编辑:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("curChoice", mCurCheckPosition);
}
然后在片段ActivityCreated()上
这些代码是从我建议你进一步阅读该页复制的。
该示例是恢复光标位置,但您可以使用它恢复以前的用户答案(文本、整数、浮点等).所有的皇后区都有相似的结构吗?如果有,你可能不用使用viewpager和fragmentPagerAdapterNo。有些会有单选按钮/微调器/编辑文本等选项。不得不说,你的问题问得很好。但最好在问题本身中添加你对Marco的回答。那么,可能会有多少问题,我会问我最多有6个片段,只需准确地更改它们的文本/选项即可。您可以创建一个捆绑包
,并将其作为setArguments(捆绑包)
传递给片段,然后在片段内使用getArgument()获得它
我这里有一个小问题。由于用户必须能够返回并检查上一个问题,对于我提供的每个片段替换,addToBackStack。以前它工作正常。但现在,在开始更改文本和选项后,我无法拥有此功能:(.因为,文本与设置为上次查看的片段的文本保持相同。因此,现在除了使用不同的片段之外,没有其他方法了吗?一个词:savedInstanceState
。我将编辑我的答案,然后查看它。