gpt4 book ai didi

Android:使用 fragment 的更好方式

转载 作者:太空狗 更新时间:2023-10-29 14:25:37 25 4
gpt4 key购买 nike

我想不出更好的问题标题:(

在我的申请中,我需要有一个提问者,比如有 10 个以上的问题,每次 1 个问题。

我所做的是:

  1. 有 1 个 Activity 说 MainActivity,在它的 onCreate() 中以编程方式添加一个 Fragment 说 Frag_1

  2. 在 Frag_1 中,我有一个接口(interface) onButtonClickedListener,它有一个方法 onClicked 可以回调 Activity 以了解点击了哪个选项等等。,

  3. 在我的 MainActivity 中实现了此接口(interface)的 onClicked 方法,并在该方法中将 Fragment 更改为 Frag_2(第二个问题)等等。

问题是:

我最终有 10 个 fragment ,我的 MainActivity 实现了 10 个接口(interface),每个 fragment 1 个。将来我可能有 30-40 个问题。

编辑:

每个问题都不会相似。问题的答案选项是 EditText/Spinner/RadioButtons 等,所以我不能使用相同的 fragment ,只能更改问题和答案选项文本。

有没有更好更有效的方法来解决这个问题

谢谢

最佳答案

你快到了。为 MainActivity 实现一个更广泛/通用的接口(interface)。也许是这样的public void fragClickCallback(int fragId, Bundle data);

在你的实现中,你可以制作一个 switch() case 来知道来自哪个问题,你的包可以为不同类型的答案打包不同的键(单选按钮/微调器的 int,String用于公开答案等)。

并确保在每个 fragment 事务中使用 .replace(...) 删除之前的 fragment 。

编辑

此外,您还可以通过一些聪明的方法构建自己的 fragment ,而不必创建数十亿个 fragment 。可以有多少种不同类型的问题?让我们数一数:

  • 多项选择(单选)->整数(索引)
  • multiple choice(多选)-> integer(flags)
  • 数字输入 -> float/double
  • 编辑文本 -> 字符串
  • 日期选择器 -> 长(纪元)
  • 时间选择器 -> 3 个整数(?)

所以我们有 6 个 fragment 和 6 种处理 switch 语句的方法,现在它只是将正确的参数传递给 fragment

编辑:

  @Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("curChoice", mCurCheckPosition);
}

然后在您的 Fragment ActivityCreated() 上

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null) {
// Restore last state for checked position.
mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
}
}

这些代码是从 http://developer.android.com/reference/android/app/Fragment.html 复制的我建议您进一步阅读该页面。该示例正在恢复光标位置,但您可以使用它来恢复您以前的用户答案(文本、整数、 float 等)。

关于Android:使用 fragment 的更好方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12909304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com