我是Android Studio新手,我正在关注{{3}}教程以了解如何编写代码。我在我的activity_main.xml中放了一个按钮,并使用拖放方法将按钮的 onClick 属性引用到我的MainActivity.java文件中的方法 buttonOnClick ( xml文件的设计选项卡)。原始代码如下:
activity_main.xml(省略了非相关代码):
<Button
android:text="@string/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:visibility="visible"
android:onClick="buttonOnClick (MainActivity)" />
MainActivity.java:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void buttonOnClick(View v) {
Button button = (Button) v;
button.setText("Click");
}
运行此代码后,当我点击按钮时,它崩溃了。如果我删除了 onClick 属性的(MainActivity)部分,它就可以了。我不知道为什么会这样,但确实如此。有人或许可以告诉我为什么吗?
应用程序崩溃时收到的错误消息如下:
java.lang.IllegalStateException:找不到方法buttonOnClick (MainActivity)(View)在父或祖先的Context中 android:在视图类上定义的onClick属性 带有id&#39;按钮&#39;
的android.support.v7.widget.AppCompatButton
答案 0 :(得分:0)
似乎假定(View),因此您也不需要(MainActivity)。
<Button
android:text="@string/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:visibility="visible"
android:onClick="buttonOnClick" />
答案 1 :(得分:0)
将android:onClick="buttonOnClick (MainActivity)"
更改为
android:onClick="buttonOnClick"
答案 2 :(得分:0)
试试这个: 删除android:onClick =&#34; buttonOnClick(MainActivity)&#34;来自xml
<Button
android:text="@string/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:visibility="visible" />
编写onClick in code
public class MainActivity extends AppCompatActivity {
public Button b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1 = (Button)findViewById(R.id.button);
b1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view) {
b1.setText("Click");
}
});
}
}