这是我的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转到下一个活动。
SomeButtonStyle2
<style name="SomeButtonStyle2" parent="@android:style/Widget.Button">
<item name="colorButtonNormal">@color/myown</item>
</style>
colors.xml 的myown 颜色
<color name="myown">#1E88E5</color>
我想要的是什么:
彩色按钮,带我到下一个活动点击。
提前致谢。
答案 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
一起使用。谢谢你们所有答案。