2016-08-15 12 views
-2

Androidスタジオで初めてのアプリケーションをプログラミングしています。ユーザーはトレーニングの種類(筋肉増強、体重減少、自分のプログラム)を選択してから、性別(男性/女性)を選択する必要があります。したがって、6つの可能な結果と2つのそれぞれのラジオ・グループ。必要なオプションを選択した後、ユーザーヒットの確定ボタンをクリックし、トレーニングタイプ(6つのaddListeneronbuttonメソッドの1つを使用)で必要な画面に進みます。しかし、アプリはインストール後に反応しません。 私が間違っていることを教えてください?トレーニングの種類を選択するための同じXML第2の無線グループ内Androidの別のラジオボタングループ内のラジオボタングループ

<RadioGroup 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:id="@+id/radioGroup"> 
    <RadioButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/Male" 
     android:text="Male" 
     android:onClick="onRadioButtonClicked"/> 
    <RadioButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:checked="true" 
     android:id="@+id/Female" 
     android:text="Female" 
     android:onclick="onRadioButtonClicked"/> 
</RadioGroup> 

public void onRadioButtonClicked(View view) { 
    switch (view.getId()) { 
     case R.id.Muscles: 
       switch (view.getId()){ 
        case R.id.Male: 
         addListenerOnButton(); 
        case R.id.Female: 
         addListenerOnButton2(); 
       } 
       break; 
     case R.id.Diet: 
      switch (view.getId()){ 
       case R.id.Male: 
        addListenerOnButton3(); 
       case R.id.Female: 
        addListenerOnButton4(); 
      } 
      break; 
     case R.id.Own: 
      switch (view.getId()){ 
       case R.id.Male: 
        addListenerOnButton3(); 
       case R.id.Female: 
        addListenerOnButton4(); 
      } 
      break; 
    } 
} 

それぞれのxmlファイルには、セックスを選択するためのコードを、次のい

<TableRow 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <RadioGroup 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:id="@+id/radioGroup2"> 
     <RadioButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:checked="true" 
      android:id="@+id/Muscles" 
      android:text="@string/Muscles" 
      android:onClick="onRadioButtonClicked"/> 
     <RadioButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/Diet" 
      android:text="@string/Fat" 
      android:onClick="onRadioButtonClicked"/> 
     <RadioButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/Own" 
      android:text="@string/Own" 
      android:onClick="onRadioButtonClicked"/> 
    </RadioGroup> 
+0

なぜネストされたグループを? 2つの別々のラジオグループの値に基づいてアプリが把握できないのですか? –

答えて

0

何をやってはるかに多いです必要以上に複雑です。あなたが必要とするのは、2つの別々のラジオグループです。各ラジオボタンがクリックされたときにコードを実行する代わりに、イベントをボタンに表示する必要があります。

ユーザーがボタンをクリックすると、両方のフィールドがチェックされていることを確認してから、次の画面での2つの値を渡す必要があります。次に、ユーザーの入力を解釈することに対処します。

したがって、解決策は簡単です。

+0

私はあなたのことを理解していると思います。アイデアをありがとう。 –

+0

ラムゼイ、ここでは私は改善するだろうが、そうはしない。 「両方のフィールドが選択されていることを確認してから、次の画面でpas値を確認する」のようにコードをどのように表示するかを入力してください。 –

+0

私はonClickを2つに分けました: –

0
public int onRadioButtonClicked (View view){ 
    return view.getId(); 
} 

public int onRadioButtonClicked2 (View view2){ 
    return view2.getId(); 
} 

そして、私はこのようなネストされた文よりも簡単な方法を取得する方法がわからない:

Button button; 


public void addListenerOnButton() { 
    final Context context = this; 
    button = (Button) findViewById(R.id.button5); 

    button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      switch(onRadioButtonClicked2(arg0)) { 
       case R.id.Muscles: 
        switch (onRadioButtonClicked(arg0)) { 
         case R.id.Male: 
          Intent intent1 = new Intent(context, MaleMuscules.class); 
          startActivity(intent1); 
          break; 
         case R.id.Female: 
          Intent intent2 = new Intent(context, FemaleMuscules.class); 
          startActivity(intent2); 
          break; 
        } 
        break; 
       case R.id.Diet: 
        switch (onRadioButtonClicked(arg0)) { 
         case R.id.Male: 
          Intent intent3 = new Intent(context, MaleLoss.class); 
          startActivity(intent3); 
          break; 
         case R.id.Female: 
          Intent intent4 = new Intent(context, FemaleLoss.class); 
          startActivity(intent4); 
          break; 
        } 
        break; 
       case R.id.Own: 
        switch (onRadioButtonClicked(arg0)) 
        { 
         case R.id.Male: 
          Intent intent5 = new Intent(context, MaleOwn.class); 
          startActivity(intent5); 
          break; 
         case R.id.Female: 
          Intent intent6 = new Intent(context, FemaleOwn.class); 
          startActivity(intent6); 
          break; 
        } 
        break; 
      } 
     } 

    }); 

} 
関連する問題