簡體   English   中英

如何在多種 Android 活動類型之間共享方法

[英]How to share methods across multiple Android activities types

我正在使用ActionBarSherlock構建Android應用程序。

我有多種類型的活動:

  • SherlockFragmentActivity
  • 夏洛克地圖活動
  • 夏洛克活動

我希望我的所有活動都共享通用方法來遵循屏幕的內部工作流程。

如果我創建一個擴展SherlockFragmentActivityWorkflow類,那么我的MapActivity does不再工作。 如果我創建了一個擴展SherlockMapActivityWorflow類,那么我的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);
}

您可以創建自定義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組合成另一個類,因此您必須自己編寫內容或從第三方庫中提取所需的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM