অ্যান্ড্রয়েড নির্বাচিত রেডিওবটন থেকে মান পাচ্ছে


98

আমার সাথে RadioButtonক এর মধ্যে তিনটি কোড সহ একটি টুকরা কোড রয়েছে RadioGroup। আমি একজন সেট করতে চান onCheckedListenerযে মান দেখাবে RadioButtonএকটি Toast। তবে আমি এখন পর্যন্ত যা অর্জন করেছি তা কাজ করছে না। আমি কীভাবে এর মান পেতে RadioButtonএবং এটি এ প্রদর্শিত করব Toast? এটি আমার কোড:

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.Toast;

public class MainActivity extends Activity {

    RadioGroup rg;

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

        RadioGroup rg = (RadioGroup) findViewById(R.id.radioGroup1);
        final String value =
            ((RadioButton)findViewById(rg.getCheckedRadioButtonId()))
            .getText().toString();

        rg.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                Toast.makeText(getBaseContext(), value, Toast.LENGTH_SHORT).show();
            }
        });
    }
}

এক্সএমএল ফাইল:

<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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="152dp" >

        <RadioButton
            android:id="@+id/radio0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Choose 1" />

         <RadioButton
            android:id="@+id/radio1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Choose 2" />

         <RadioButton
            android:id="@+id/radio2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Choose 3" />
     </RadioGroup>
 </RelativeLayout>

উত্তর:


167

পরীক্ষিত এবং কাজ। পরীক্ষা করে দেখুন এই

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;

public class MyAndroidAppActivity extends Activity {

  private RadioGroup radioGroup;
  private RadioButton radioButton;
  private Button btnDisplay;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    addListenerOnButton();

  }

  public void addListenerOnButton() {

    radioGroup = (RadioGroup) findViewById(R.id.radio);
    btnDisplay = (Button) findViewById(R.id.btnDisplay);

    btnDisplay.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

                // get selected radio button from radioGroup
            int selectedId = radioGroup.getCheckedRadioButtonId();

            // find the radiobutton by returned id
            radioButton = (RadioButton) findViewById(selectedId);

            Toast.makeText(MyAndroidAppActivity.this,
                radioButton.getText(), Toast.LENGTH_SHORT).show();

        }

    });

  }
}

এক্সএমএল

<RadioGroup
        android:id="@+id/radio"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <RadioButton
            android:id="@+id/radioMale"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/radio_male" 
            android:checked="true" />

        <RadioButton
            android:id="@+id/radioFemale"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/radio_female" />

    </RadioGroup>

6
আপনি মাইকং লিঙ্ক থেকে এই জিনিসটি দেখেছেন ... বোতামটি ব্যবহার না করে কীভাবে আমরা একাধিক রেডিও গ্রুপের জন্য নির্বাচিত আইডি পেতে পারি।
আজ

4
পারফেক্ট !!! উত্তর ... রেডিও বোতাম ভিউ পাওয়া সহজ, যখন ব্যবহারকারী ক্লিক করবেন !!
নাজিব আহমেদ পুঠোওয়ালা

80

যদি আপনি রেডিও বোতামগুলির একটিতে (কোনও অতিরিক্ত ওকে বাটন বা কিছু না রেখে) বাছাইয়ের বিষয়ে কিছু কাজ করতে চান তবে আপনার কোডটি ঠিক আছে, সামান্য আপডেট হয়েছে।

public class MainActivity extends Activity {

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

        RadioGroup rg = (RadioGroup) findViewById(R.id.radioGroup1);

        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() 
        {
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch(checkedId){
                    case R.id.radio0:
                        // do operations specific to this selection
                        break;
                    case R.id.radio1:
                        // do operations specific to this selection
                        break;
                    case R.id.radio2:
                        // do operations specific to this selection
                        break;
                }   
            }
        });
    }
}

4
কেবলমাত্র একটি ছোট সংশোধন, খুব ছোট একটি, আপনি দু'বার 'আরজি' ঘোষণা করেছেন। এটি মোটেও কোনও পার্থক্য তৈরি করবে না, কেবল কোডটি আরও পাঠযোগ্য।
সানভেড

14
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
       @Override
       public void onCheckedChanged(RadioGroup group, int checkedId)
       {
           radioButton = (RadioButton) findViewById(checkedId);
           Toast.makeText(getBaseContext(), radioButton.getText(), Toast.LENGTH_SHORT).show();
       }
   }
   );

6

যে কেউ প্রোগ্রামিয়ালি পপুলেশন করছে এবং একটি সূচক পেতে চাইছে, আপনি লক্ষ্য করতে পারেন যে আপনি ক্রিয়াকলাপ / খণ্ডে ফিরে আসার সাথে সাথে চেকডআইডি পরিবর্তন হয় এবং আপনি সেই রেডিও বোতামগুলি পুনরায় যুক্ত করেন। তার কাছাকাছি যাওয়ার একটি উপায় হ'ল সূচকটির সাথে ট্যাগ সেট করা:

    for(int i = 0; i < myNames.length; i++) {
        rB = new RadioButton(getContext());
        rB.setText(myNames[i]);
        rB.setTag(i);
        myRadioGroup.addView(rB,i);
    }

তারপরে আপনার শ্রোতার মধ্যে:

    myRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            RadioButton radioButton = (RadioButton) group.findViewById(checkedId);
            int mySelectedIndex = (int) radioButton.getTag();
        }
    });

6
int genid=gender.getCheckedRadioButtonId();
RadioButton radioButton = (RadioButton) findViewById(genid);
String gender=radioButton.getText().toString();

আশা করি এটি কাজ করে। আপনি উপরের পদ্ধতিতে আপনার আউটপুটটিকে স্ট্রিংয়ে রূপান্তর করতে পারেন। gender.getCheckedRadioButtonId();- লিঙ্গ হ'ল রেডিওগোষ্ঠীর আইডি।


ঠিকভাবে কাজ করে! তবে আমি যখন ফায়ারবেসে ডেটা সংরক্ষণ করি এবং যদি কোনও নাল বস্তুর রেফারেন্সে "java.lang.CharSequence android.widget.RadioButton.getText () 'এর সাথে ভার্চুয়াল পদ্ধতিটি চালানোর চেষ্টা করা অ্যাপ্লিকেশানটি পরীক্ষা করতে আমি কোনও রেডিও বিটিএন মিস করি তবে" কোনও সমাধান
গোবিন্দ

6
mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
        RadioButton radioButton = (RadioButton)group.findViewById(checkedId);
    }
});

5

যদি কিছু পরীক্ষা করা হয় তবে ওয়েটার নির্ধারণের জন্য getCheckedRadioButtonId () ফাংশনটি ব্যবহার করুন, -1 ফিরে আসে তবে আপনি টোস্ট উপস্থিত হওয়া এড়াতে পারবেন


4
Radiogroup rgteam;
String team;
rgteam.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
            RadioButton rb= (RadioButton) findViewById(checkedId);
            team = rb.getText().toString();
        }
    });

2

এক্সএমএলে রেডিওগোষ্ঠী

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">
<RadioGroup
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Java"/>

    </RadioGroup>
</RelativeLayout>

কার্যকলাপ_মাইন.এক্সএমএল

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="150dp"
        android:layout_marginLeft="100dp"
        android:textSize="18dp"
        android:text="Select Your Course"
        android:textStyle="bold"
        android:id="@+id/txtView"/>
<RadioGroup
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:id="@+id/rdGroup"
    android:layout_below="@+id/txtView">
    <RadioButton
        android:id="@+id/rdbJava"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:layout_marginLeft="100dp"
        android:text="Java"
        android:onClick="onRadioButtonClicked"/>
    <RadioButton
        android:id="@+id/rdbPython"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:layout_marginLeft="100dp"
        android:text="Python"
        android:onClick="onRadioButtonClicked"/>
    <RadioButton
        android:id="@+id/rdbAndroid"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:layout_marginLeft="100dp"
        android:text="Android"
        android:onClick="onRadioButtonClicked"/>
    <RadioButton
        android:id="@+id/rdbAngular"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:layout_marginLeft="100dp"
        android:text="AngularJS"
        android:onClick="onRadioButtonClicked"/>
</RadioGroup>
    <Button
        android:id="@+id/getBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="100dp"
        android:layout_below="@+id/rdGroup"
        android:text="Get Course" />
</RelativeLayout>

মেইনএ্যাকটিভিটি.জভা

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    RadioButton android, java, angular, python;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        android = (RadioButton)findViewById(R.id.rdbAndroid);
        angular = (RadioButton)findViewById(R.id.rdbAngular);
        java = (RadioButton)findViewById(R.id.rdbJava);
        python = (RadioButton)findViewById(R.id.rdbPython);
        Button btn = (Button)findViewById(R.id.getBtn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String result = "Selected Course: ";
                result+= (android.isChecked())?"Android":(angular.isChecked())?"AngularJS":(java.isChecked())?"Java":(python.isChecked())?"Python":"";
                Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
            }
        });
    }
    public void onRadioButtonClicked(View view) {
        boolean checked = ((RadioButton) view).isChecked();
        String str="";
        // Check which radio button was clicked
        switch(view.getId()) {
            case R.id.rdbAndroid:
                if(checked)
                str = "Android Selected";
                break;
            case R.id.rdbAngular:
                if(checked)
                str = "AngularJS Selected";
                break;
            case R.id.rdbJava:
                if(checked)
                str = "Java Selected";
                break;
            case R.id.rdbPython:
                if(checked)
                str = "Python Selected";
                break;
        }
        Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();
    }
}

1

ক্রিসকে অনেক ধন্যবাদ।

এটি আমার সমাধান:

RadioGroup radgroup_opcionesEventos = null;


 private static String[] arrayEventos = {
            "Congestión", "Derrumbe", "Accidente"
    };
@Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        radgroup_opcionesEventos = (RadioGroup)findViewById(R.id.rg_opciones_evento);
        int i=0;//a.new.ln
        for(String evento : arrayEventos) {
            //RadioButton nuevoRadio = crearRadioButton(evento);//a.old.ln
            RadioButton nuevoRadio = crearRadioButton(evento,i);//a.new.ln
            radgroup_opcionesEventos.addView(nuevoRadio,i);
        }

        RadioButton primerRadio = (RadioButton) radgroup_opcionesEventos.getChildAt(0);
        primerRadio.setChecked(true);
}

private RadioButton crearRadioButton(String evento, int n)
    {
        //RadioButton nuevoRadio = new RadioButton(this);//a.old.ln
        RadioButton nuevoRadio = new RadioButton(getApplicationContext());//a.new.ln

        LinearLayout.LayoutParams params = new RadioGroup.LayoutParams(
                RadioGroup.LayoutParams.WRAP_CONTENT,
                RadioGroup.LayoutParams.WRAP_CONTENT);
        nuevoRadio.setLayoutParams(params);
        nuevoRadio.setText(evento);
        nuevoRadio.setTag(evento);
        return nuevoRadio;
    }


@Override
    protected void onResume()
    {
        radgroup_opcionesEventos.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                RadioButton radioButton = (RadioButton) group.findViewById(checkedId);
                //int mySelectedIndex = (int) radioButton.getTag();
                String mySelectedIndex = radioButton.getTag().toString();
            }
        });
        super.onResume();
    }

-1

রেডিওবটনগুলি যখন গতিশীলভাবে উত্পন্ন হয় তখন রেডিও বোতামগুলির আইডি পেতে আমারও সমস্যা হয়েছিল। আপনি যদি আইডি ব্যবহার করে ম্যানুয়ালি সেট করার চেষ্টা করেন তবে এটি কাজ করবে বলে মনে হচ্ছে না RadioButton.setId()। কি আমার জন্য কাজ ব্যবহার করতে ছিল View.getChildAt()এবং View.getParent()রেডিও বোতাম মাধ্যমে পুনরুক্তি করতে অনুক্রমে এবং তা নির্ধারণ এক চেক করা হয়। আপনার যা দরকার তা হ'ল প্রথমে রেডিওগ্রুপটি পেতে findViewById(R.id.myRadioGroup)এবং তারপরে বাচ্চাদের মাধ্যমে পুনরাবৃত্তি করা। আপনি যে বোতামটি চালু করছেন তা পুনরাবৃত্তি করার সাথে সাথে আপনি জানতে পারবেন এবং RadioButton.isChecked()এটি সেই বোতামটি যাচাই করা হয়েছে কিনা তা নির্ধারণ করতে আপনি সহজেই ব্যবহার করতে পারেন।


আপনি চিন্না এর উত্তর চেক পারেন, যে পেজটি হয় লিঙ্ক
MikeTheLiar

4
@ আব্রাহামউরিব আপনি কি আমার সম্পাদিত উত্তরটি পর্যালোচনা করতে পারবেন এবং দেখুন যে এটি পতাকাঙ্কিত আগেরটির চেয়ে ভাল?
উ। ভিন

@ মাইক দ্য লিয়ার আপনি সঠিক, আমি মূল উত্তরটিতে লিঙ্কটি লক্ষ্য করিনি, এটি আমার ভুল।
উ। ভিন

এই ক্ষেত্রে, আমি বিশ্বাস করি যে সেটেট্যাগ (i) ব্যবহার করা ভাল সমাধান হ'ল, যেখানে আপনি রেডিও গ্রুপকে জনপ্রিয় করতে যে অ্যারে ব্যবহার করছেন সেটিই আমি সূচক। আমি এটি করার উপায়টি দেখানোর জন্য একটি উত্তর যুক্ত করেছি।
ক্রিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.