2013-12-17 28 views
1

当我宣布在MainActivity.java一个按钮,我得到不幸的是错误的模拟器不幸的是错误的仿真器时声明按钮

但是,当我评论的按钮声明,没有任何错误

这是MainActivity.java代码:

package com.MalekAlrwily.multiplication; 

import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.app.Activity; 
import android.content.Intent; 

public class MainActivity extends Activity { 

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

    final Button btn = (Button)findViewById(R.id.btn_start) ; 
} 



} 

这是main.xml中代码:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@drawable/main2" > 

<ImageButton 
    android:id="@+id/btn_start" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:background="@android:color/transparent" 
    android:contentDescription="@android:string/ok" 
    android:src="@drawable/sun" /> 

</RelativeLayout> 

请帮忙

在此先感谢。

+1

最终按钮BTN =(按钮)findViewById(R.id.btn_start);如果您检查logcat,可能的异常将是ClassCastException。由于您正尝试将ImageButton转换为Button – Triode

回答

5

这是因为,你在xmlImageButton申报和动态,声明Button

它应该是:

final ImageButton btn = (ImageButton) findViewById(R.id.btn_start) ; 
5

这是您的布局中的ImageButton,因此您应该在活动中使用ImageButton

final Button btn = (Button)findViewById(R.id.btn_start) ; 

这应该是

final ImageButton btn = (ImageButton) findViewById(R.id.btn_start) ; 
5

Iths因为ü尝试负载ImageButtonButton

您应该使用

final ImageButton btn = (ImageButton)findViewById(R.id.btn_start) ; 
4

你必须在Java文件中声明Button而不是ImageButton

声明它是这样的:

final ImageButton btn = (ImageButton)findViewById(R.id.btn_start) ;