QA@IT

初心者です.intentで渡した値によってメソッドを分岐させる方法について.

2109 PV

現在eclipseにてandroidアプリを作成しています.
あるアクティビティAから別のアクティビティBにint型の値を渡し,その値に応じてアクティビティBで実行されるメソッドを使い分けようとしているのですが,アプリが強制終了してしまい,うまくいきません.
アクティビティAにはExpandableListViewを用いており,タップされた項目に応じてアクティビティBでの挙動をswitch文で分岐します.以下に私が書いたコードの概略を示しますので,なぜきちんと動作しないのか分かる方いらっしゃいましたら指摘していただけないでしょうか.
強制終了するのはActivityAの子項目をタップした時です.また,値を渡さすことはせずにactivityBをただ生成することは可能で,この時ActivityBのフィールドint groupおよびint childに直接値を入れることで正常にメソッドが動作することは確認済みです.

アクティビティA
public class ActivityA extends ActionBarActivity{
      @Override
      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_a);

      ExpandableListView elv = (ExpandableListView)findViewById(R.id.expandableListView1);

      ExpandableListView本体のコードは省略)

      //ExpandableListViewの子項目をタップした時に呼び出されるリスナー
      elv.setOnChildClickListener(new OnChildClickListener(){
           @Override
           public boolean onChildClick(ExpandableListView parent, View v,
                                       int groupPosition, int childPosition, long id) {

                       Intent i = new Intent(ActivityA.this,ActivityB.class);
                       //項目のpositionを渡す
                       i.putExtra("GROUP", groupPosition );
                       i.putExtra("CHILD", childPosition );
                       startActivity(i);

                       //ActivityAを終了
                       finish(); 
                       return false;
            }});
       }
}
ActivityB
public class ActivityB extends ActionBarActivity {

//ActivityAから渡される値を受け取る
Intent intent = getIntent();
int group = intent.getIntExtra("GROUP", 0);
int child = intent.getIntExtra("CHILD", 0);

       @Override
       protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_b);

       //group,childを引数にメソッドを実行
       method(group,child);
       }

//メソッドの定義
private void method (int groupNum , int childNum){
      switch(groupNum){
      case 0:
             switch(childNum){
             case 0:
                    (処理)
                    break;
             case 1:
                    (処理)
                    break;
              .
              .
              .
             }
      break;
      case 1:
             switch(childNum){
             case 0:
                    (処理 )
                    break;
              case 1:
                    (処理)
                    break;
              .
              .
              .
             }
      break; 
      .
      .
      .
      }
}
ウォッチ

この質問への回答やコメントをメールでお知らせします。