如果我在RadioBox
中注册了一个额外的onCreate()
事件,那么问题只会出现 ,其他的事情就好了。
也许在我的事件方法中有一些错误或不兼容的问题,我实际上是一个(非常)初学者,所以我一直在网上搜索原因但仍然没有运气。 Android 版本4.4.4 ,我正在使用 Android Studio &用于调试的真实设备 Sony Xperia 。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(text);
setContentView(R.layout.file_layout); // load "file_layout.xml"
/*============== These 3 events are just fine============
addListenerOnButton();
addListenerOnEditText();
addListenerOnCheckBox();
======================================================*/
addListenerOnRadioBox(); // THE PROBLEM IS THIS ONE!
}
这就是我用来注册RadioBoxes的方法
public void addListenerOnRadioBox() {
radioSexGroup = (RadioGroup) findViewById(R.id.radioSex);
btnDisplay.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int selectedId = radioSexGroup.getCheckedRadioButtonId();
radioSexButton = (RadioButton) findViewById(selectedId);
Toast.makeText(HelloWorldActivity.this,radioSexButton.getText(), Toast.LENGTH_SHORT).show();
}
});
}
他们的布局配置:
<RadioGroup
android:id="@+id/radioSex"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp">
<RadioButton
android:id="@+id/radioMale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="male"
android:checked="true" />
<RadioButton
android:id="@+id/radioFemale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="female" />
</RadioGroup>
我在想这里不正确的东西:
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="android.mkyong.com.helloworld2"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="7" />
....
....
</manifest>
之前谢谢
答案 0 :(得分:1)
通过查看您的代码,我猜您尚未初步化btnDisplay
这就是您的应用崩溃的原因。在设置btnDisplay
回调之前,先在addListenerOnRadioBox()
方法中初始化onClick()
。
public void addListenerOnRadioBox() {
radioSexGroup = (RadioGroup) findViewById(R.id.radioSex);
//Initialise button
btnDisplay = (Button) findViewById(R.id.buttonDisplay);
btnDisplay.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int selectedId = radioSexGroup.getCheckedRadioButtonId();
radioSexButton = (RadioButton) findViewById(selectedId);
Toast.makeText(HelloWorldActivity.this,radioSexButton.getText(), Toast.LENGTH_SHORT).show();
}
});
}