次のように、クラスコンダクターを使用してすべてのアクティビティを管理します。
また、すべてのアクティビティは、共通ビューを使用するように基本アクティビティを拡張します。
この場合、転送アクティビティを処理します。次に例を示します。
Base -> First -> Second -> Third -> First
Base -> First -> Fourth -> Fifth -> Fourth
アクティビティを転送する場合、Conductorはスタック内のすべてのアクティビティを処理する必要があります。
私はこのコンダクターを以下のように書き込もうとしています(スタックの代わりにリストを使用して管理します):
public class Conductor {
private List<Activity> listOfActivityInStack;
public Conductor(){
listOfActivityInStack = new ArrayList<Activity>();
}
public void startActivity(Activity activity, Class<?> cls){
listOfActivityInStack.add(activity);
Intent i = new Intent(activity.getApplicationContext(), cls);
activity.startActivity(i);
}
public void startActivityForResult(Activity activity, Class<?> cls, int requestCode){
listOfActivityInStack.add(activity);
Intent i = new Intent(activity.getApplicationContext(), cls);
activity.startActivityForResult(i, requestCode);
}
public void startAcitivtyClearPrevious(Activity activity, Class<?> cls){
listOfActivityInStack.clear();
listOfActivityInStack.add(activity);
Intent i = new Intent(activity.getApplicationContext(), cls);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
activity.startActivity(i);
}
public int getCount(){
if(listOfActivityInStack == null)
return 0;
return listOfActivityInStack.size();
}
}
このコンダクターをグローバル変数に格納します。それから私はそれを以下のように使用します:
//Get conductor from application global
conductor.startActivity(FirstActivity.this, SecondActivity.class);
//Then add conductor to application global
しかし、私にはいくつかの問題があります:
- リストからアクティビティを削除するには、すべてのアクティビティに対してgoBack()を処理する必要があります。
- アクティビティがリストに存在することを確認します。存在する場合は、そのインスタンスを取得してみてください。
Androidですべてのアクティビティを管理するための最良の方法はありますか?検索を試みましたが、良い答えが見つかりませんでした。
天気かどうか、私のやり方は正しいのだろうか。どんな推薦や例も助けになるでしょう!