主题按钮onClick强制关闭应用程序

时间:2016-01-13 19:06:51

标签: android android-5.0-lollipop

这是我的Button元素的XML代码,主题为:

splashscreen.xml

        <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click Here →"
        android:textColor="@color/white"
        android:layout_marginTop="15dp"
        android:onClick="sendMain"
        android:id="@+id/button2"  
        android:theme="@style/SomeButtonStyle2"    
        />
SplashScreen.java上的

onClick()

 public void sendMain(View view)
        {
            Intent intent = new Intent(SplashScreen.this, MainActivity.class);
            startActivity(intent);
        }

这会出现一个对话框,显示“应用程序已停止”并且应用程序强制关闭。

logcat的

java.lang.IllegalStateException: Could not find a method sendMain(View) in the activity class android.view.ContextThemeWrapper for onClick handler on view class android.widget.Button with id 'button2'

但是,当android:theme="@style/SomeButtonStyle2"删除时,应用正常,我可以使用按钮onclick转到下一个活动。

styles.xml

SomeButtonStyle2

<style name="SomeButtonStyle2" parent="@android:style/Widget.Button">

        <item name="colorButtonNormal">@color/myown</item>

    </style>
colors.xml

myown 颜色

<color name="myown">#1E88E5</color>

我想要的是什么:

彩色按钮,带我到下一个活动点击。

提前致谢。

2 个答案:

答案 0 :(得分:3)

android:theme替换为style

<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click Here →"
        android:textColor="@color/white"
        android:layout_marginTop="15dp"
        android:onClick="sendMain"
        android:id="@+id/button2"
        style="@style/SomeButtonStyle2"
        />

如果你想要一个材质彩色按钮,你可以试试这个AppCompat风格并用你自己的颜色着色:

<android.support.v7.widget.AppCompatButton
    style="@style/Widget.AppCompat.Button.Colored"
    app:backgroundTint="@color/your_custom_color"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Click Here →"
    android:textColor="@color/white"
    android:layout_marginTop="15dp"
    android:onClick="sendMain"
    android:id="@+id/button2"/>

答案 1 :(得分:0)

@TouchBoarder,是的,你的答案也有效。但无法改变颜色。 找到了一个使用android:theme的解决方案并让它也能运行。如果从xml中删除android:onclick,并以编程方式在Java中使用,则可以使用 android:theme :)

splashscreen.xml [使用android:主题但android:onclick已删除]

    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Click Here →"
    android:textColor="@color/white"
    android:layout_marginTop="15dp"       
    android:id="@+id/button2"  
    android:theme="@style/SomeButtonStyle2"    
    />

SplashScreen.java [使用onClickListener]

final Button button = (Button) findViewById(R.id.button2);

        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent activityChangeIntent = new Intent(SplashScreen.this, MainActivity.class);

                SplashScreen.this.startActivity(activityChangeIntent);
            }
        });

因此,总而言之,在 xml 中使用OnClickListener代替onClick()可以与android:theme一起使用。谢谢你们所有答案。