1

ActionBarSherlockを使用してAndroidアプリケーションを構築しています。

複数の種類のアクティビティがあります。

  • SherlockFragmentアクティビティ
  • SherlockMapアクティビティ
  • シャーロックアクティビティ

画面の内部ワークフローに従うために、すべての活動で共通の方法を共有したいと考えています。

Workflow拡張するクラスを作成すると、SherlockFragmentActivity機能しMapActivity doesなくなります。Worflow拡張するクラスを作成するとSherlockMapActivity、 myTutorialActivityは機能しなくなります ( 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は単なるアダプターであるため、クラスの1つでフィールドとして構成できます。

Edit2: 2 つのクラスを拡張することはできず、Activity別のクラスに構成することもできないため、自分で何かを作成するか、サード パーティのライブラリから必要な機能を抽出する必要があります。

于 2012-11-15T14:25:32.207 に答える