java - 将选定的单选按钮文本作为字符串
问题描述
我创建了两个活动,一个用于注册详细信息,另一个用于显示用户输入的值。但是当我试图从选定的单选组中获取单选按钮的值时。它没有显示任何错误,但是当我在手机中调试和运行时。并单击注册按钮 它显示应用程序停止工作重新开始消息
我的 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 = "";
}
已编辑
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 = "";
}
}
});
推荐阅读
- unity3d - Unity Fabric/Crashytics 集成失败
- sql - 为什么这个触发器总是显示?
- angular - 如何保护Angular中的路由路径?
- c# - 使用 SignalR Core 将消息从控制器方法发送到 Angular
- c# - Visual C# 贝塞尔曲线绘制问题
- php - 前端的woocommerce ajax不起作用
- excel - XLSX 到 CSV 或 .txt “断言失败”错误
- docker - 谁在 docker 容器中是空的
- python - 如何让一个线程等待其他线程在python中执行特定任务
- apache-spark - 使用 Pyspark 如何将文本文件转换为 CSV 文件