不幸的是,添加活动后app已经停止了

时间:2015-11-13 09:59:02

标签: android events

如果我在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>

之前谢谢

1 个答案:

答案 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();

            }
        });
    }