【发布时间】:2015-07-27 12:28:42
【问题描述】:
我正在为按钮创建一个自定义主题,并使用 xml 本身的 Button 的android:onClick 事件来处理按钮的点击。
由于某种原因,它崩溃并出现以下异常
java.lang.IllegalStateException: Could not find a method MyOnClick(View) in the activity class android.view.ContextThemeWrapper for onClick handler on view class android.widget.Button with id 'button1'
如果我只是从 Button 中删除主题属性,它工作正常,下面是我的 Button 主题
<style name="ButtonTheme" parent="@android:style/Widget.Button">
<item name="android:textColor">#FF0000</item>
<item name="android:shadowColor">#FF000000</item>
</style>
我的 Button 在 xml 中定义如下,
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_margin="20dp"
android:onClick="MyOnClick"
android:theme="@style/ButtonTheme"
android:text="Button" />
这也是我的 java 代码,
public void MyOnClick(View view) {
switch (view.getId()) {
case R.id.button1:
getWindow().setStatusBarColor(getResources()
.getColor(R.color.statusBarColor));
getWindow().setNavigationBarColor(getResources()
.getColor(R.color.statusBarColor));
break;
default:
break;
}
}
那么,崩溃的原因可能是什么?如果我从 xml 的 Button Widget 中删除 android:theme="@style/ButtonTheme" 属性,我就能够处理点击事件。
【问题讨论】:
-
发布你的java代码...
-
尝试使用旧方法删除 android:onClick 属性并使用 Button button=(Button)findViewById(R.id.button1);button.setOnClickListener(new View.OnClickListener(){ @Override public void onClick (查看 v) { } });并且不要忘记定义按钮
-
@L-X 但为什么呢?我想在xml本身中添加点击事件,然后呢?
-
伙计,我猜错误是您为每个按钮定义了相同的 onClick 方法(猜测您有多个按钮),但这会产生错误尝试为不同的按钮定义不同的函数名称并定义所有这些java中的函数,试试吧
-
@L-X 我现在只有一个按钮,如果我有多个按钮,我也可以在开关盒内使用
view.getId()来定义它。
标签: android android-layout android-activity