gpt4 book ai didi

只有一个 Activity 和多个 fragment 的 Android

转载 作者:行者123 更新时间:2023-11-30 02:57:25 24 4
gpt4 key购买 nike

对不起我的英语,

我读过,在 Activity 或 Fragment 之间,我们应该尽快使用 Fragment。正因为如此,我开发了我的整个应用程序,其中包含很多 fragment 和一个 Activity ,使用 beginTransaction().replace() 方法从一个切换到另一个。但似乎我必须在 Activity 中而不是在 fragment 中实现我所有的事件方法(如 onClick)。因此,如果我只在一项 Activity 中开发所有内容,我将只在类里面使用我所有的事件方法,这将是不可读的......

我想知道最好的做法是什么:一个 Activity 有很多 fragment ,还是多个 Activity ……怎么做?

谢谢。

最佳答案

只有一个 Activity 和很多 fragment 的整个应用可能不是一个好主意。

如果您的应用功能需要它,您可以让一个 Activity 管理多个 fragment :支持平板电脑和手机/抽屉导航/ViewPager 等。

无论如何,使用 fragment 不会强制您在主 Activity 中编写所有事件方法。您的主要 Activity 处理 fragment 创建/交换,但您在 fragment 屏幕上执行的大部分操作都可以在 fragment 类中进行编码。

如果你想在多个 Activity 中重复使用一个 fragment ,就必须这样。

正如谷歌文档中所说:“您可以将 fragment 视为 Activity 的模块化部分,它有自己的生命周期,接收自己的输入事件,并且您可以在 Activity 正在运行(有点像您可以在不同 Activity 中重复使用的“子 Activity ”)。

您放在主要 Activity 中的特定代码应该很容易在 fragment 中进行重构。

你看过官方文档了吗?可能有一些很好的例子。 http://developer.android.com/guide/components/fragments.html

在 fragment 中编码 Action 与在 Activity 中编码它们非常相似:

您可以在 fragment 中处理操作栏操作:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
// Inflate your menu
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.option1:
// Handle option 1
return true;
case R.id.option2:
// Handle option 2
return true;
default:
return super.onOptionsItemSelected(item);
}
}

您可以在 fragment 中处理按钮操作:

Button yourButton = (Button) view.findViewById(R.id.yourbutton);
btnUpload.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// Handle button click
}
});

您可以在 fragment 中编写异步任务。

如果你有一个列表,你可以在 fragment 中编写列表上下文菜单操作的代码:

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);

// Inflate your context menu
}

@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.option1:
// Handle option 1
return true;
case R.id.option2:
// Handle option 2
return true;
default:
return super.onContextItemSelected(item);
}
}

AlertDialog 在 fragment 中工作。

等等。等

您是否有一个特定的操作会给您在 fragment 重构中带来麻烦?

关于只有一个 Activity 和多个 fragment 的 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23046959/

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