2014-04-18 63 views
0

問題解決了! 在我的relativelayout標記中,我定義了android:onClick ... 我刪除了它,它的工作原理,感謝您的幫助!

當我爲我的按鈕,可以使用選擇,我的應用程序崩潰...... 我會瘋了..我研究了互聯網上,但我沒有找到真正的解決方案android當我使用選擇器爲我的按鈕,它崩潰

我的按鈕代碼:

<Button 
    android:id="@+id/ib_login" 
    android:layout_width="300dp" 
    android:layout_height="40dp" 
    android:layout_alignLeft="@+id/et_password" 
    android:layout_below="@+id/et_password" 
    android:layout_marginTop="20dp" 
    android:background="@drawable/login_selector" /> 

我選擇代碼:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
     android:state_pressed="true" 
     android:drawable="@drawable/button_onclick" 
     /> 
<item android:drawable="@drawable/button"/> 

</selector> 

而且我的logcat:

04-18 06:52:37.084: E/AndroidRuntime(608): FATAL EXCEPTION: main 
04-18 06:52:37.084: E/AndroidRuntime(608): java.lang.IllegalStateException: Could not find a method res/drawable-hdpi/button_onclick.png(View) in the activity class com.kisirdongu.denemeapp.MainActivity for onClick handler on view class android.widget.RelativeLayout with id 'container' 
04-18 06:52:37.084: E/AndroidRuntime(608): at android.view.View$1.onClick(View.java:3031) 
04-18 06:52:37.084: E/AndroidRuntime(608): at android.view.View.performClick(View.java:3511) 
04-18 06:52:37.084: E/AndroidRuntime(608): at android.view.View$PerformClick.run(View.java:14105) 
04-18 06:52:37.084: E/AndroidRuntime(608): at android.os.Handler.handleCallback(Handler.java:605) 
04-18 06:52:37.084: E/AndroidRuntime(608): at android.os.Handler.dispatchMessage(Handler.java:92) 
04-18 06:52:37.084: E/AndroidRuntime(608): at android.os.Looper.loop(Looper.java:137) 
04-18 06:52:37.084: E/AndroidRuntime(608): at android.app.ActivityThread.main(ActivityThread.java:4424) 
04-18 06:52:37.084: E/AndroidRuntime(608): at java.lang.reflect.Method.invokeNative(Native Method) 
04-18 06:52:37.084: E/AndroidRuntime(608): at java.lang.reflect.Method.invoke(Method.java:511) 
04-18 06:52:37.084: E/AndroidRuntime(608): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
04-18 06:52:37.084: E/AndroidRuntime(608): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
04-18 06:52:37.084: E/AndroidRuntime(608): at dalvik.system.NativeStart.main(Native Method) 
04-18 06:52:37.084: E/AndroidRuntime(608): Caused by: java.lang.NoSuchMethodException: res/drawable-hdpi/button_onclick.png [class android.view.View] 
04-18 06:52:37.084: E/AndroidRuntime(608): at java.lang.Class.getConstructorOrMethod(Class.java:460) 
04-18 06:52:37.084: E/AndroidRuntime(608): at java.lang.Class.getMethod(Class.java:915) 
04-18 06:52:37.084: E/AndroidRuntime(608): at android.view.View$1.onClick(View.java:3024) 
04-18 06:52:37.084: E/AndroidRuntime(608): ... 11 more 

*整個佈局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/container" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#C7C7C7" 
android:onClick="@drawable/button_onclick" 
android:orientation="vertical" 
tools:context="com.kisirdongu.denemeapp.MainActivity" 
tools:ignore="MergeRootFrame" > 

<EditText 
    android:id="@+id/et_password" 
    android:layout_width="300dp" 
    android:layout_height="40dp" 
    android:layout_below="@+id/et_username" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="20dp" 
    android:background="@drawable/edittext" 
    android:drawablePadding="10dp" 
    android:ems="10" 
    android:hint="*****" 
    android:paddingLeft="8dp" 
    android:paddingRight="8dp" 
    android:password="true" 
    android:singleLine="true" /> 

<Button 
    android:id="@+id/ib_login" 
    android:layout_width="300dp" 
    android:layout_height="40dp" 
    android:layout_alignLeft="@+id/et_password" 
    android:layout_below="@+id/et_password" 
    android:layout_marginTop="20dp" 
    android:background="@drawable/login_selector" /> 

<ProgressBar 
    android:id="@+id/pb_login" 
    style="?android:attr/progressBarStyleLarge" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/ib_login" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="17dp" 
    android:visibility="invisible" /> 

<TextView 
    android:id="@+id/tv_login" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/pb_login" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="11dp" 
    android:text="Logging in..." 
    android:visibility="invisible" /> 

<EditText 
    android:id="@+id/et_username" 
    android:layout_width="300dp" 
    android:layout_height="40dp" 
    android:layout_alignLeft="@+id/et_password" 
    android:layout_alignParentTop="true" 
    android:layout_marginTop="52dp" 
    android:background="@drawable/edittext" 
    android:drawablePadding="10dp" 
    android:ems="10" 
    android:hint="username" 
    android:paddingLeft="8dp" 
    android:paddingRight="8dp" 
    android:singleLine="true" > 

    <requestFocus /> 
</EditText> 

<TextView 
    android:id="@+id/tv_user" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="14dp" 
    android:text="User Login" 
    android:textColor="#333" 
    android:textSize="20sp" /> 

</RelativeLayout> 

*我繪製forlder:

http://puu.sh/8dlOx.png

感謝您的幫助!

+0

你確定那是因爲這個按鈕造成的?你可以發佈你的整個佈局? – tasomaniac

+0

您確定您的可繪製文件夾中有名爲'button_onclick.png'的圖片,拼寫正確嗎? –

回答

0

android:onClick="@drawable/button_onclick"線在RelativeLayout導致問題。它期望一個方法的名稱,但你傳遞一個drawable。

0

在我看來,您需要在創建自定義背景時定義所有三種狀態,即默認,按下按鈕和聚焦按鈕。另外,還要確保你有你的圖像九宮格點陣圖 您已經定義只有兩個,這裏是一個例子

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/button_pressed" 
      android:state_pressed="true" /> 
    <item android:drawable="@drawable/button_focused" 
      android:state_focused="true" /> 
    <item android:drawable="@drawable/button_default" /> 
</selector> 

如需更多幫助,請點擊這裏 http://developer.android.com/guide/topics/ui/controls/button.html

+0

我不認爲你必須定義所有三個狀態,只有一個按下,一個默認應該很好 –

+0

對不起,先生,沒有工作:( – user3289406

+0

好吧,檢查我給出的鏈接,它是官方的android文檔,有一個子標題「自定義背景」,它說那裏你需要三個狀態,也確保圖像是九個補丁位圖 – coderVishal

0

從佈局中刪除android:onClick="@drawable/button_onclick"

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#C7C7C7" 
    android:orientation="vertical" 
    tools:context="com.kisirdongu.denemeapp.MainActivity" 
    tools:ignore="MergeRootFrame" > 
相關問題