Często w Androidzie korzystamy z menu zawierającego pola typu Radio Button. Poniższy program odczytuje wartości z trzech grup pól RadioButtonGroup.

Tworzymy nowy pusty projekt, do którego dodajemy

  1. Containers ->RadioGroup dla każdego zbioru przycisków (np. języki to jeden)
  2. Dla każdej opcji Widget -> RadioButton, po dodaniu ostatniego w danej grupie zmieniamy właściwość RadioGroup layout:width i layout:height na „wrap contents”
  3. Przycisk „Dalej” u dołu
  4. Obok każdej grupy też przyda się opis (np. typu MediumText)
  5. Dobrym zwyczajem jest nadanie nazwy dla każdej grupy w stylu RadioJezykGroup (wybór języka) – będziemy z tego potem korzystać w kodzie Java

A oto działający kod rozumiejący wybrane opcje menu dla 3 grup (dla gry FingerboardMaster do nauki gryfu): wyboru języka, wyboru instrumentu, oraz wyboru rodzaju gryfu (normalny lub leworęczny).

MainActivity:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package com.fulara.fingerboardmaster;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
import android.view.View;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Button;
import android.view.View.OnClickListener;

public class MainActivity extends ActionBarActivity {
    private RadioGroup radioJezykGroup, radioInstrumentGroup, radioFretboardGroup;
    private RadioButton radioJezykButton, radioInstrumentButton, radioFretboardButton;
    private Button playGame;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        radioJezykGroup = (RadioGroup) findViewById(R.id.radioJezykGroup);
        radioInstrumentGroup = (RadioGroup) findViewById(R.id.radioInstrumentGroup);
        radioFretboardGroup = (RadioGroup) findViewById(R.id.radioFretboardGroup);
        playGame = (Button) findViewById(R.id.startGame);
        playGame.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                // get selected radio button from radioGroup
                int selectedJezykId = radioJezykGroup.getCheckedRadioButtonId();
                radioJezykButton = (RadioButton) findViewById(selectedJezykId);

                int selectedInstrumentId =  radioInstrumentGroup.getCheckedRadioButtonId();
                radioInstrumentButton = (RadioButton) findViewById(selectedInstrumentId);

                int selectedFretboardId =  radioFretboardGroup.getCheckedRadioButtonId();
                radioFretboardButton = (RadioButton) findViewById(selectedFretboardId);

                Toast.makeText(MainActivity.this,
                        "Język: "+radioJezykButton.getText() +
                        "\nInstrument: "+ radioInstrumentButton.getText() +
                        "\nGryf: " + radioFretboardButton.getText(),
                        Toast.LENGTH_SHORT).show();

            }

        });

    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    public void clickStartGame(View view){

    }
}

Jeszcze manifest:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <TextView android:text="@string/Autor" android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentTop="true"
       android:layout_centerHorizontal="true"
       android:id="@+id/Credits" />

    <RadioGroup
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginTop="24dp"
       android:id="@+id/radioJezykGroup"
       android:layout_below="@+id/Credits"
       android:layout_alignRight="@+id/Credits"
       android:layout_alignEnd="@+id/Credits">

        <RadioButton
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="English"
           android:id="@+id/radioButton"
           android:layout_gravity="center_horizontal"
           android:checked="true" />

        <RadioButton
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Polski"
           android:id="@+id/radioButton2"
           android:checked="false" />
    </RadioGroup>

    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:textAppearance="?android:attr/textAppearanceMedium"
       android:text="Instrument:"
       android:id="@+id/textView2"
       android:layout_marginTop="24dp"
       android:layout_below="@+id/radioJezykGroup"
       android:layout_alignRight="@+id/textView"
       android:layout_alignEnd="@+id/textView" />

    <RadioGroup
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignTop="@+id/textView2"
       android:layout_alignLeft="@+id/radioJezykGroup"
       android:layout_alignStart="@+id/radioJezykGroup"
       android:id="@+id/radioInstrumentGroup">

        <RadioButton
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Guitar"
           android:id="@+id/radioButton3"
           android:checked="true" />

        <RadioButton
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Bass"
           android:id="@+id/radioButton4"
           android:checked="false" />

        <RadioButton
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Doublenecked guitar"
           android:id="@+id/radioButton5"
           android:checked="false" />
    </RadioGroup>

    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:textAppearance="?android:attr/textAppearanceMedium"
       android:text="Language (język)"
       android:id="@+id/textView"
       android:layout_alignTop="@+id/radioJezykGroup"
       android:layout_toLeftOf="@+id/radioJezykGroup"
       android:layout_toStartOf="@+id/radioJezykGroup" />

    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:textAppearance="?android:attr/textAppearanceMedium"
       android:text="Fretboard"
       android:id="@+id/textView3"
       android:layout_alignTop="@+id/radioFretboardGroup"
       android:layout_toLeftOf="@+id/radioInstrumentGroup"
       android:layout_toStartOf="@+id/radioInstrumentGroup" />

    <RadioGroup
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:id="@+id/radioFretboardGroup"
       android:layout_marginTop="41dp"
       android:layout_below="@+id/radioInstrumentGroup"
       android:layout_toRightOf="@+id/textView2"
       android:layout_toEndOf="@+id/textView2">

        <RadioButton
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Standard"
           android:id="@+id/radioButton6"
           android:checked="true" />

        <RadioButton
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Left-handed"
           android:id="@+id/radioButton7"
           android:checked="false" />
    </RadioGroup>

    <Button
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Start Game"
       android:id="@+id/startGame"
       android:layout_marginTop="36dp"
       android:layout_below="@+id/radioFretboardGroup"
       android:layout_centerHorizontal="true" />

</RelativeLayout>