抱歉我的英文,
我已经读过活动或片段之间的内容,我们应该尽快使用片段。因此,我正在使用大量片段和一个活动开发我的整个应用程序,使用beginTransaction().replace()
方法从一个活动切换到另一个活动。但似乎我必须在活动中而不是在片段中实现我的所有事件方法(如onClick)。因此,如果我只在一个活动中开发所有内容,我将在课堂上使用我的所有事件方法,这将是不可读的...
我想知道最好的事情是什么:一个包含大量片段或多个活动的活动......怎么样?
感谢。
答案 0 :(得分:1)
只有一个活动和大量片段的整个应用程序可能不是一个好主意。
如果您的应用功能需要它,您可以拥有一个活动管理的多个片段:支持平板电脑和手机/导航抽屉/ ViewPager等。
无论如何,使用片段并不会强迫您在主要活动中编写所有事件方法的代码。您的主要活动处理片段创建/交换,但您在片段的屏幕上执行的大多数操作都可以在片段类中进行编码。
如果要在多个活动中重复使用片段,则必须采用这种方式。
正如google doc所说: "您可以将片段视为活动的模块化部分,它有自己的生命周期,接收自己的输入事件,您可以添加或在活动运行时删除(类似于"子活动"您可以在不同的活动中重复使用)"。
您在主要活动中输入的特定代码应该很容易在片段中重构。
您看过官方文档了吗?可能有一些很好的例子。 http://developer.android.com/guide/components/fragments.html
片段中的编码操作与在活动中编码它们非常相似:
您可以处理片段中的操作栏操作:
@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);
}
}
您可以处理片段中的按钮操作:
Button yourButton = (Button) view.findViewById(R.id.yourbutton);
btnUpload.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Handle button click
}
});
您可以在片段中编码asynctask。
如果您有一个列表,则可以在片段中编写列表上下文菜单操作:
@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在片段中工作。
等。等
您是否有一个特定的操作会让您无法在片段中进行重构?