Android只有一个活动和多个片段

时间:2014-04-13 18:52:14

标签: android events android-fragments

抱歉我的英文,

我已经读过活动或片段之间的内容,我们应该尽快使用片段。因此,我正在使用大量片段和一个活动开发我的整个应用程序,使用beginTransaction().replace()方法从一个活动切换到另一个活动。但似乎我必须在活动中而不是在片段中实现我的所有事件方法(如onClick)。因此,如果我只在一个活动中开发所有内容,我将在课堂上使用我的所有事件方法,这将是不可读的...

我想知道最好的事情是什么:一个包含大量片段或多个活动的活动......怎么样?

感谢。

1 个答案:

答案 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在片段中工作。

等。等

您是否有一个特定的操作会让您无法在片段中进行重构?