0

これはAndroidに関連しているため、Javaの問題です。

私のコードには、30のケースを含むswitchステートメントが含まれています。各ケースの本文は、そのケースに関連するインテントを開始するための同じ形式になっています。クラス名を引数として本体をメソッドとしてコーディングしようとしましたが、クラス名をインテントにハードコーディングする必要があるため、そのコードはコンパイルされません。

以下はスイッチのセクションです(長い道のり)

            switch(mState) {
    case 0:
               Intent myIntent = new Intent();
               myIntent.setClass(Home_ASM.this, Home_AS0.class);
               startActivityForResult(myIntent, 0);
               break;

    case 1:
              Intent myIntent1 = new Intent(); 
              myIntent1.setClass(Home_ASM.this, Home_AS1.class);
              startActivityForResult(myIntent1, 2);
              break;    

そして私はそのようなものをコーディングしたいと思います:

            switch(mState) {
            case 0:
               myStart(Home_AS0.class,1);
               break;
            case 1:
               myStart(Home_AS1.class,2);
               break;

と方法

private void myStart(String state, int value) {
            Intent myIntent = new Intent();
            myIntent.setClass(Home_ASM.this, state);
            startAcivityForResult(myIntent, value);
            }

これを機能させる方法について何かアイデアはありますか?

4

3 に答える 3

2

方法を持ってみませんか

private void myStart(Class class, int value)

そして、文字列の代わりにクラスを渡すだけですか?

于 2012-07-25T14:54:56.810 に答える
2

あなたは試すことができますClass.forName("nameofClass");

編集:編集後、ジョン・テイラーの答えは私の答えよりも適切です。参照:http ://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Class.html#forName%28java.lang.String%29

于 2012-07-25T14:55:47.887 に答える
1

同様のことをします。コードは次のようになります。

Switchステートメント:

case 0:
      {
         launchActivity(ActivityOne.class, value);
         break;
      }

アクティビティを開始する方法:

private void launchActivity(Class<?> aClass, int value) {
        Intent intent = new Intent();
        intent.setClass(this, aClass);
        startActivityForResult(intent, value);
    }

これを簡単に適応させて、特定のint値をとることができます。お役に立てれば!

于 2012-07-25T15:02:48.940 に答える