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

只有一个活动和多个片段的Android,android,events,android-fragments,Android,Events,Android Fragments,对不起我的英语 我已经读到,在活动或片段之间,我们应该尽快使用片段。正因为如此,我用大量片段和一个活动开发了整个应用程序,使用beginTransaction().replace()方法从一个应用程序切换到另一个应用程序。但似乎我必须在活动中实现所有事件方法(比如onClick),而不是在片段中。所以,如果我只在一个活动中开发所有内容,我将在课堂上使用所有事件方法,这将是不可读的 我想知道最好的做法是什么:一个活动有很多片段,或者多个活动。。。怎么做 谢谢。一个只有一个活动和很多片段的整个应用程

对不起我的英语

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

我想知道最好的做法是什么:一个活动有很多片段,或者多个活动。。。怎么做


谢谢。

一个只有一个活动和很多片段的整个应用程序可能不是一个好主意

如果您的应用程序功能需要,您可以通过一个活动管理多个片段:支持平板电脑和手机/导航抽屉/可视寻呼机等

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

如果你想在多个活动中重复使用一个片段,就必须这样做

正如谷歌文档中所说: “您可以将片段视为活动的模块化部分,它有自己的生命周期,接收自己的输入事件,您可以在活动运行时添加或删除它(有点像“子活动”,可以在不同的活动中重用)”

您放在主活动中的特定代码应该很容易在片段中重构

你看过官方文件了吗?可能会有一些很好的例子。

片段中的编码操作与活动中的编码操作非常相似:

您可以在片段中处理动作栏动作:

@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
 }
});
@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);
    }
}
您可以在片段中处理按钮操作:

@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
 }
});
@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);
    }
}
您可以在片段中编写asynctask

如果有列表,可以在片段中对列表上下文菜单操作进行编码:

@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
 }
});
@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在片段中工作

等等等等

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