2014-04-18 67 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" > 
相关问题