我的Android应用程序崩溃无法弄清楚为什么?

时间:2011-07-27 00:24:45

标签: android

我收到错误(见图片)enter image description here

我无法弄清楚发生了什么。它字面上说我的RadioGroup不能转换为TextView?但为什么 ? R.id.myMessage不是RadioButtom!

活动

public class Ch7_JoshRadioGroup extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final TextView myMessage = (TextView) findViewById(R.id.myMessage);

        // Gestion du bouton "Hello, Joshua"
        Button myButton = (Button) findViewById(R.id.myButton);

        myButton.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                // View est un type générale
                // v est le bouton dans ce contexte-ci
                //Button thisOne = (Button) v;
                //thisOne.setText("You pushed this button!");

                // Envoi un toast d'une longue durée lorsque le bouton est appuyé
                Toast.makeText(Ch7_JoshRadioGroup.this, "test", Toast.LENGTH_LONG); 
            }
        });
    }
}

布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    android:id="@+id/myMessage"
    />

<Button 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello_joshua"
    android:id="@+id/myButton"
    />

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:orientation="horizontal">

    <TextView 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:background="#ff0000"
        android:textColor="#000000"
        android:text="red"
    />

    <TextView 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:background="#00ff00"
        android:textColor="#000000"
        android:text="green"
    />

    <TextView 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:background="#0000ff"
        android:textColor="#000000"
        android:text="blue"
    />
</LinearLayout>

<RadioGroup
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/myRadioGroup"
    android:orientation="horizontal">

    <RadioButton
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginLeft="35dp"
        android:layout_weight="1"
        android:id="@+id/myRadioButtonRed"
     />

    <RadioButton
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginLeft="35dp"
        android:layout_weight="1"
        android:id="@+id/myRadioButtonGreen"
     />

     <RadioButton
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginLeft="35dp"
        android:layout_weight="1"
        android:id="@+id/myRadioButtonBlue"
     />

</RadioGroup>

</LinearLayout>

3 个答案:

答案 0 :(得分:1)

删除xml中的内容。如果你不使用。

我假设您要设置按钮的文本

按钮myButton =(按钮)findViewById(R.id.myButton);

    myButton.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View v) {
            myButton.seText("You pushed this button");

            // Envoi un toast d'une longue durée lorsque le bouton est appuyé
            Toast.makeText(Ch7_JoshRadioGroup.this, "test", Toast.LENGTH_LONG); 
        }

   }

执行此操作时,请尝试清理项目Project -> Clean select the project and hit OK

编辑:如果你不需要RadioGroup

,你的xml应该是这样的
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    android:id="@+id/myMessage"
    />

<Button 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello_joshua"
    android:id="@+id/myButton"
    />

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:orientation="horizontal">

    <TextView 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:background="#ff0000"
        android:textColor="#000000"
        android:text="red"
    />

    <TextView 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:background="#00ff00"
        android:textColor="#000000"
        android:text="green"
    />

    <TextView 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:background="#0000ff"
        android:textColor="#000000"
        android:text="blue"
    />
</LinearLayout>
</LinearLayout>

答案 1 :(得分:1)

这应该解决它。

Project->Clean->Clean All Projects [OK]
Run->Run

答案 2 :(得分:0)

你不应该在函数范围内使用findViewById吗?试试这个:

// Gestion du bouton "Hello, Joshua"
Button myButton = null;

myButton.setOnClickListener(new OnClickListener(){
    @Override
    public void onClick(View v) {

         myButton = (Button) findViewById(R.id.myButton)

        // View est un type générale
        // v est le bouton dans ce contexte-ci
        //Button thisOne = (Button) v;
        //thisOne.setText("You pushed this button!");

        // Envoi un toast d'une longue durée lorsque le bouton est appuyé
        Toast.makeText(Ch7_JoshRadioGroup.this, "test", Toast.LENGTH_LONG); 
    }
});