1

我正在使用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);
}
4

1 回答 1

3

您可以创建一个自定义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成另一个类,因此您要么必须自己编写东西,要么从第三方库中提取所需的功能。

于 2012-11-15T14:25:32.207 回答