0

データベースのアダプターに基づくメインの ListView があります。各データベース ID は、ListView を介してアクティビティに「割り当て」られます。私の AndroidManifest では、各アクティビティにカスタム アクションを含むインテント フィルターがあります。これで、このクラスを作成する必要がありました:

public final class ActivityLauncher {
    private ActivityLauncher() { }

    public static void launch(Context c, int id) {
        switch(id) {
         case 1:
            Intent intent = new Intent();
            intent.setAction(SomeActivity.ACTION_SOMEACTIVITY);
            c.startActivity(intent);
            break;
        case 2:
            ...
            break;
        ...
        }
    }

    private static void st(Context context, String action) {
        Intent intent = new Intent();
        intent.setAction(action);
        context.startActivity(intent);
    }
}

そのため、switch ステートメントの新しいケースを手動で作成する必要があります。IDを並べ替えたり削除したりしなければならない場合、これは面倒です。これを回避する方法はありますか?

4

1 に答える 1

0

私はあなたの推論について完全にはわかりませんが、ここにパントがあります。必要な動作をカプセル化するオブジェクトを作成します。

public class User {
    private static final User[] users = new User[2];
    static {
         user[0] = new User(0, "Action_0");
         user[1] = new User(1, "Action_1");
    }

    private final int id;
    private final String action;

    public User(int id, String action){
          this.id = id;
          this.action = action;
    }

    public int getId(){
           return this.id;
    }

    public Intent getIntent(){
           Intent intent = new Intent();
           intent.setAction(this.action);
           return intent;
    }

    public static User getUser(int id){
        for(int i=0; i < users.length; i++){
             User user = user[i];
             if(id == user.getId()){
                 return user;
             }
        }
        throw new Resources.NotFoundException("User not found with id: "+id);
    }

}

だからあなたの活動であなたは持つことができます:

 public void launch(Context c, int id) {
       Intent intent = User.getUser(id).getIntent();
       c.startActivity(intent);
 }

またはそれらの線に沿った何か、これをさらに拡張してUser、生のIDの代わりにラウンド''オブジェクトを渡すことができます。コンテキストをgetIntentメソッドに渡して、それを''メソッドに変更することもできstartます。Userこのクラスの名前はおそらく悪い名前です。あなたのドメインについてはよくわかりません。

于 2012-06-17T21:14:13.280 に答える