簡體   English   中英

獲取選定的單選按鈕文本作為字符串

[英]getting selected radiobutton text as string

我創建了兩個活動,一個用於注冊詳細信息,另一個活動用於顯示用戶輸入的值。 但是,當我嘗試從選定的單選按鈕組中獲取單選按鈕的值時。 它不會顯示任何錯誤,但是會在我調試並在手機中運行時顯示。 並單擊“注冊”按鈕它顯示應用程序停止工作,再次啟動消息

我的MainActivity.java:

import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity {


    Button signUpButton,signInButton;
    TextView userTimeJoining, dateOfBirth;

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


        signInButton = findViewById(R.id.signinbutton);
        signInButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            }
        });

        signUpButton = findViewById(R.id.signupbutton);
        signUpButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent gotoRegAct = new Intent(MainActivity.this, RegistrationActivity.class);
                startActivity(gotoRegAct);


            }
        });

    }
}

我的RegistrationActivity.java:

import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

import java.util.Calendar;

public class RegistrationActivity extends AppCompatActivity {


    String courseList[] = {"Java","Python", "Android", "Kotlin"};


    Button submitButton;
    EditText nameOfUser, userGmail, userName, userPassword;
    TextView userDateOfBirth, userTimeOfJoining;
    Spinner mySpinnerForCourse;
    RadioGroup genderSelected;
    RadioButton selectedRadiobutton;


    String setTime;
    String setDate;
    String setGender=" ";
    int itemNoSelected;




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




        submitButton = findViewById(R.id.submitButton);
        nameOfUser = findViewById(R.id.nameofuser);
        userGmail = findViewById(R.id.usergmail);
        userName = findViewById(R.id.username);
        userPassword = findViewById(R.id.userpassword);
        userDateOfBirth = findViewById(R.id.userdateofbirth);
        userTimeOfJoining = findViewById(R.id.usertimeofjoining);
        mySpinnerForCourse = findViewById(R.id.usercourse);
        genderSelected = findViewById(R.id.usergender);

       //This is the code which is not working
        int selectedRadioButtonId = genderSelected.getCheckedRadioButtonId();
        selectedRadiobutton = (RadioButton) findViewById(selectedRadioButtonId);
        setGender = selectedRadiobutton.getText().toString();

        ArrayAdapter<String> arrayAdapterForCourse = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item,courseList);
        mySpinnerForCourse.setAdapter(arrayAdapterForCourse);

        mySpinnerForCourse.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                itemNoSelected = i;
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });


        userTimeOfJoining.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Calendar calendar = Calendar.getInstance();
                int hh = calendar.get(Calendar.HOUR);
                int mm = calendar.get(Calendar.MINUTE);

                TimePickerDialog timePickerDialog = new TimePickerDialog(RegistrationActivity.this, new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker timePicker, int i, int i1) {
                        setTime = i+" : "+i1;
                        userTimeOfJoining.setText(setTime);
                    }
                },

                        hh, mm, false);
                timePickerDialog.show();

            }
        });

        userDateOfBirth.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Calendar calendar = Calendar.getInstance();
                int dd = calendar.get(Calendar.DAY_OF_MONTH);
                int mm = calendar.get(Calendar.MONTH);
                int yy = calendar.get(Calendar.YEAR);

                DatePickerDialog datePickerDialog = new DatePickerDialog(RegistrationActivity.this, new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
                        setDate = i2+" / "+i1+" / "+i;
                        userDateOfBirth.setText(setDate);
                    }
                }, yy, mm, dd);
                datePickerDialog.show();
            }
        });

        submitButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent gotoShowInfo = new Intent(RegistrationActivity.this, ShowInfo.class);

                Bundle bundleforenteredvalue = new Bundle();

                bundleforenteredvalue.putString("enteredname",nameOfUser.getText().toString());
                bundleforenteredvalue.putString("enteredgmail",userGmail.getText().toString());
                bundleforenteredvalue.putString("enteredusername",userName.getText().toString());
                bundleforenteredvalue.putString("enteredpassword",userPassword.getText().toString());
                bundleforenteredvalue.putString("dateselected",setDate);
                bundleforenteredvalue.putString("timeselected",setTime);
                bundleforenteredvalue.putString("genderselected",setGender);
                bundleforenteredvalue.putString("courseselected",courseList[itemNoSelected]);

                gotoShowInfo.putExtras(bundleforenteredvalue);

                startActivity(gotoShowInfo);
            }
        });


    }
}

我的ShowInfo.java:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class ShowInfo extends AppCompatActivity {


    TextView nameOfUserEntered, usernameEntered, passwordEntered,gmailEntered, genderSelected, courseSelected, dateOFJoinSelected, timeOfJoinSelected;


    Button signInButtonAgain;

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

        Bundle getValue = getIntent().getExtras();
        String getnameentered = getValue.getString("enteredname");
        String getenteredGmail = getValue.getString("enteredgmail");
        String getenteredUsername = getValue.getString("enteredusername");
        String getenteredPassword = getValue.getString("enteredpassword");
        String getdateSelected = getValue.getString("dateselected");
        String gettimeSelected = getValue.getString("timeselected");
        String getgenderSelected = getValue.getString("genderselected");
        String getcourseSelected = getValue.getString("courseselected");


        nameOfUserEntered = findViewById(R.id.nameofuserentered);
        usernameEntered = findViewById(R.id.usernameentered);
        passwordEntered = findViewById(R.id.passwordentered);
        gmailEntered = findViewById(R.id.gmailentered);
        genderSelected = findViewById(R.id.genderselected);
        courseSelected = findViewById(R.id.courseselected);
        dateOFJoinSelected = findViewById(R.id.dateofjoinselected);
        timeOfJoinSelected = findViewById(R.id.timeofjoinselected);
        signInButtonAgain = findViewById(R.id.signinbuttonagain);

        nameOfUserEntered.setText("Welcome "+ getnameentered);
        usernameEntered.setText("Your username is "+getenteredUsername);
        passwordEntered.setText("Your password is "+getenteredPassword);
        gmailEntered.setText("Your gmail is "+getenteredGmail);
        genderSelected.setText("Your gender is the "+getgenderSelected);
        courseSelected.setText("You selected for the "+getcourseSelected+" Course");
        dateOFJoinSelected.setText("your joinig date is "+getdateSelected);
        timeOfJoinSelected.setText("Time of your duty is starts from "+gettimeSelected);

        signInButtonAgain.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent gotoMainmenu = new Intent(ShowInfo.this, MainActivity.class);
                startActivity(gotoMainmenu);
            }
        });


    }
}

在注冊活動中,我僅通過我的應用顯示錯誤消息的代碼添加了注釋。 如果我刪除radiobutton代碼和getString字符串。 它正常工作,然后不顯示應用程序停止工作的消息。 那么為什么我不能將radiobutton字符串的值從一個活動傳遞給另一個活動。

嘗試執行此操作,如果在單選組中未選擇任何值,則您的單選按鈕ID返回-1。

int chk_gender = rg_gender.getCheckedRadioButtonId();
            if (chk_gender != -1) {
                Gender = ((RadioButton)findViewById(chk_gender)).getText().toString();
            }
            else
            {
                Gender = "";
            }

EDITED

rg_gender.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            if (checkedId != -1) {
                Gender = ((RadioButton)findViewById(checkedId)).getText().toString();
            }
            else
            {
                Gender = "";
            }
        }
    });

在您的xml布局中,您是否已將TRUE選中任何單選按鈕? 單擊提交按鈕應獲得選定的單選按鈕值,它將使用最新值更新setGender字符串。 對於您的應用崩潰,請在應用崩潰時發布您的logcat錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM