[英]Android studio radio button single select and The record button is clicked
繼任期間我有十個問題。 我想要做,
1-問題的答案(僅應單擊一個按鈕)
2-當我轉到下一個問題時,看到我單擊上一個單選按鈕的答案
JAVA類
public class Sinavsorulari extends Activity {
TextView tv_soruNum, tv_soru;
RadioButton rb_a, rb_b, rb_c, rb_d;
Button btn_sonrakiSoru,btn_oncekiSoru , btn_kaydet;
String url = "http://192.168.56.2/soru_cekme.php";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sinav_sorulari);
tv_soruNum=(TextView)findViewById(R.id.tv_soruNum);
tv_soru=(TextView)findViewById(R.id.tv_soru);
btn_oncekiSoru=(Button)findViewById(R.id.btn_oncekiSoru);
btn_sonrakiSoru=(Button)findViewById(R.id.btn_sonrakiSoru);
btn_kaydet = (Button) findViewById(R.id.btn_kaydet);
rb_a = (RadioButton) findViewById(R.id.rb_cevapa);
rb_b = (RadioButton) findViewById(R.id.rb_cevapb);
rb_c = (RadioButton) findViewById(R.id.rb_cevapc);
rb_d = (RadioButton) findViewById(R.id.rb_cevapd);
btn_oncekiSoru.setEnabled(false);
btn_kaydet.setEnabled(false);
btn_kaydet.setVisibility(View.INVISIBLE);
new HttpAsyncTask().execute(url);
}
private class HttpAsyncTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
return GET(urls[0]);
}
// onPostExecute displays the results of the AsyncTask.
@Override
protected void onPostExecute(final String result) {
final String[] cevaplar = new String[20];
final JSONArray[] jsonarray = {null};
final String[] soru1 = {null};
final String[] id_soru1 = {null};
final int[] y = {0};
final String[] cvp = new String[24];
try {
final int[] t = { 0 };
jsonarray[0] = new JSONArray(result);
final JSONObject obj1 = jsonarray[0].getJSONObject(t[0]);
id_soru1[0] = obj1.getString("id_soru");
soru1[0] = obj1.getString("baslik_soru");
tv_soruNum.setText(id_soru1[0]);
tv_soru.setText(soru1[0]);
for (int k = 0; k < 4; k++) {
cvp[k] = obj1.getString("icerik_cevap");
if(k == 0){
rb_a.setText(cvp[k]);
}else if(k == 1) {
rb_b.setText(cvp[k]);
}else if(k == 2){
rb_c.setText(cvp[k]);
}else if(k == 3){
rb_d.setText(cvp[k]);
}
}
if ( rb_a.isSelected()){
cvp[y[0]]="A";
}
else if( rb_b.isSelected()){
cvp[y[0]] ="B";
}
else if( rb_c.isSelected()){
cvp[y[0]]="C";
}
else if( rb_d.isSelected()){
cvp[y[0]]="D";
}
else {
rb_a.setChecked(false);
rb_b.setChecked(false);
rb_c.setChecked(false);
rb_d.setChecked(false);
}
final JSONArray finalJsonarray = jsonarray[0];
btn_sonrakiSoru.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
t[0]+=4;
y[0] +=1;
btn_oncekiSoru.setEnabled(true);
JSONObject obj2 = finalJsonarray.getJSONObject(t[0]);
id_soru1[0] = obj2.getString("id_soru");
soru1[0] = obj2.getString("baslik_soru");
tv_soruNum.setText(id_soru1[0]);
tv_soru.setText(soru1[0]);
for (int k = 0; k < 4; k++) {
cvp[k] = obj2.getString("icerik_cevap");
if (k == 0) {
rb_a.setText(cvp[k]);
} else if (k == 1) {
rb_b.setText(cvp[k]);
} else if (k == 2) {
rb_c.setText(cvp[k]);
} else if (k == 3) {
rb_d.setText(cvp[k]);
}
}
if ( rb_a.isSelected()){
cvp[y[0]]="A";
}
else if( rb_b.isSelected()){
cvp[y[0]] ="B";
}
else if( rb_c.isSelected()){
cvp[y[0]]="C";
}
else if( rb_d.isSelected()){
cvp[y[0]]="D";
}
else {
rb_a.setChecked(false);
rb_b.setChecked(false);
rb_c.setChecked(false);
rb_d.setChecked(false);
}
int j=t[0] + 4;
if(j == finalJsonarray.length()){
btn_sonrakiSoru.setEnabled(false);
btn_sonrakiSoru.setVisibility(View.INVISIBLE);
btn_kaydet.setVisibility(View.VISIBLE);
btn_kaydet.setEnabled(true);
btn_kaydet.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
btn_oncekiSoru.setEnabled(false);
}
});
}
}catch (JSONException e) {
e.printStackTrace();
}
}
});
btn_oncekiSoru.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
t[0]-=4;
JSONObject obj2 = null;
try {
obj2 = finalJsonarray.getJSONObject(t[0]);
id_soru1[0] = obj2.getString("id_soru");
soru1[0] = obj2.getString("baslik_soru");
tv_soruNum.setText(id_soru1[0]);
tv_soru.setText(soru1[0]);
for (int k = 0; k <4; k++) {
cvp[k] = obj2.getString("icerik_cevap");
if (k == 0) {
rb_a.setText(cvp[k]);
} else if (k == 1) {
rb_b.setText(cvp[k]);
} else if (k == 2) {
rb_c.setText(cvp[k]);
} else if (k == 3) {
rb_d.setText(cvp[k]);
}
}
if ( rb_a.isSelected()){
cvp[y[0]]="A";
}
else if( rb_b.isSelected()){
cvp[y[0]] ="B";
}
else if( rb_c.isSelected()){
cvp[y[0]]="C";
}
else if( rb_d.isSelected()){
cvp[y[0]]="D";
}
else {
rb_a.setChecked(false);
rb_b.setChecked(false);
rb_c.setChecked(false);
rb_d.setChecked(false);
}
if( t[0] == 0 ){
btn_oncekiSoru.setEnabled(false);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
} catch (JSONException e) {
e.printStackTrace();
}
}
}
public static String GET(String url){
InputStream inputStream = null;
String result = "";
try {
// create HttpClient
HttpClient httpclient = new DefaultHttpClient();
// make GET request to the given URL
HttpResponse httpResponse = httpclient.execute(new HttpGet(url));
// receive response as inputStream
inputStream = httpResponse.getEntity().getContent();
// convert inputstream to string
if(inputStream != null)
result = convertInputStreamToString(inputStream);
else
result = "Did not work!";
} catch (Exception e) {
Log.d("InputStream", e.getLocalizedMessage());
}
return result;
}
private static String convertInputStreamToString(InputStream inputStream) throws IOException {
BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(inputStream));
String line = "";
String result = "";
while((line = bufferedReader.readLine()) != null)
result += line;
inputStream.close();
return result;
}
}
和我的.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/tv_soruNum"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/tv_soru"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/tv_soruNum"
android:layout_toEndOf="@+id/tv_soruNum"
android:layout_marginLeft="48dp"
android:layout_marginStart="48dp" />
<View
android:layout_width="match_parent"
android:layout_height="3dp"
android:layout_below="@+id/tv_soru"
android:id="@+id/view"
android:layout_marginBottom="25dp"
android:layout_marginTop="35dp"
android:background="#000000" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rb_cevapa"
android:layout_below="@+id/view"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:checked="false" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rb_cevapb"
android:layout_below="@+id/rb_cevapa"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="52dp"
android:checked="false" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rb_cevapc"
android:layout_below="@+id/rb_cevapb"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="68dp"
android:checked="false" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rb_cevapd"
android:layout_below="@+id/rb_cevapc"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="68dp"
android:checked="false" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Oncekı"
android:id="@+id/btn_oncekiSoru"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_sonrakiSoru"
android:layout_alignTop="@+id/btn_oncekiSoru"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:text="Sonraki" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Kaydet"
android:id="@+id/btn_kaydet"
android:layout_alignTop="@+id/btn_sonrakiSoru"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
謝謝你幫我
對於RadioButton
問題,您需要像下面的示例一樣添加RadioGroup
。
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton android:id="@+id/radio_pirates"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pirates"
android:onClick="onRadioButtonClicked"/>
<RadioButton android:id="@+id/radio_ninjas"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ninjas"
android:onClick="onRadioButtonClicked"/>
</RadioGroup>
要顯示選定的RadioButton
,可以使用Toast
。
使用RadioGroup 在這里參考
例
activity.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="20dp">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="How do you like the quality of our tutorials?"
android:textAppearance="?android:attr/textAppearanceLarge" />
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton
android:id="@+id/radioButton1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Excellent " />
<RadioButton
android:id="@+id/radioButton2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Satisfactory" />
<RadioButton
android:id="@+id/radioButton3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Below Average" />
</RadioGroup>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/clearBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="onClear"
android:text="Clear " />
<Button
android:id="@+id/submitBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="onSubmit"
android:text="Submit" />
</LinearLayout>
</LinearLayout>
MainActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
public class MainActivity extends Activity {
private RadioGroup radioGroup;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/* Initialize Radio Group and attach click handler */
radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
radioGroup.clearCheck();
/* Attach CheckedChangeListener to radio group */
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton rb = (RadioButton) group.findViewById(checkedId);
if(null!=rb && checkedId > -1){
Toast.makeText(MainActivity.this, rb.getText(), Toast.LENGTH_SHORT).show();
}
}
});
}
public void onClear(View v) {
/* Clears all selected radio buttons to default */
radioGroup.clearCheck();
}
public void onSubmit(View v) {
RadioButton rb = (RadioButton) radioGroup.findViewById(radioGroup.getCheckedRadioButtonId());
Toast.makeText(MainActivity.this, rb.getText(), Toast.LENGTH_SHORT).show();
}
}
這可能對您有幫助。
對於您的問題,您應該使用RadioGroup
。
一個RadioGroup
基本上是一組RadioButtons
,因此一次只能選擇一個。 盡管您可以自定義它以允許多個選擇,但是默認情況下它允許您一次選擇一個RadioButton
。
因此,形成一個包含4個選項的4個RadioButtons
的RadioGroup
。
radioGroup = (RadioGroup) findViewById(R.id.myRadioGroup);
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// find which radio button is selected
switch(checkedId){
case R.id.rb_option1: //1st option selected
break;
case R.id.rb_option2: //2nd option selected
break;
case R.id.rb_option3: //3rd option selected
break;
case R.id.rb_option4: //4th option selected
break;
}
}
});
希望這可以幫助 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.