如何跨多个Android活动类型共享方法

时间:2012-11-15 14:24:01

标签: java android

我正在使用 ActionBarSherlock 构建 Android 应用程序。

我有多种类型的活动:

  • SherlockFragmentActivity
  • SherlockMapActivity
  • SherlockActivity

我希望所有我的活动共享常用方法以跟进屏幕的内部工作流程。

如果我创建的Workflow类扩展SherlockFragmentActivity,那么我的MapActivity does将无法使用。 如果我创建了一个Worflow类扩展SherlockMapActivity,那么我的TutorialActivity将不再有效(因为它使用的是new SectionsPagerAdapter(getSupportFragmentManager());

请注意我想要的常用方法也在运行startActivity()

我知道Java不能有一个扩展多个类的类,所以我应该怎么做呢?

public class Workflow extends SherlockMapActivity {

protected void goMain() {
    Intent intent = new Intent(getApplicationContext(), MainActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(intent);
}

@Override
protected boolean isRouteDisplayed() {
    return false;
}

    // ...
}

public class TutorialActivity extends Workflow {
    // ...
    // new SectionsPagerAdapter(getSupportFragmentManager());
    // ...
}

public class GameActivity extends Workflow {
    // ...
    // MapView
    // ...
}

我也想分享这样的代码:

@Override
protected void onCreate(Bundle savedInstance) {
    super.onCreate(savedInstance);
    requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
    setProgressBarIndeterminate(true);
    setProgressBarIndeterminateVisibility(false);
}

1 个答案:

答案 0 :(得分:2)

您可以创建自定义Activity课程并将其扩展到您的活动中。

例如:

public abstract class DerivedActivityA extends Activity implements CustomInterfaceA {

    // ... your code here
}

public abstract class DerivedActivityB extends DerivedActivityA implements CustomInterfaceB {

    // ... your code here
}

如果你必须实现多个接口,那么就像我上面那样使用抽象类并实现接口。

修改 如果我做对了SectionsPagerAdapter只是一个适配器,那么你可以在一个类中将它作为一个字段组合。

<强> EDIT2: 您不能扩展两个类,也不能将Activity组成另一个类,因此您必须自己编写内容或从第三方库中提取所需的功能。