gpt4 book ai didi

带有 onClick(MainActivity) 的 Android 按钮 IllegalStateException

转载 作者:行者123 更新时间:2023-11-29 19:23:20 25 4
gpt4 key购买 nike

全新的安卓系统。我有一个应该触发 onClick 方法的按钮,该方法覆盖了与 onClickListener 一起使用的 onClick 方法。问题是,当我按下按钮时,会抛出一个 IllegalStateException,提示无法找到按钮 XML 中定义的 onClick(MainActivity) 方法。

下面的代码是抛出 IllegalStateException 的代码。但是,如果我将按钮的 XML 更改为 android:onClick="onClick",则该按钮可以完全正常工作。这是为什么?

按钮 XML:

<Button
android:text="Accept"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText2"
android:layout_centerHorizontal="true"
android:layout_marginTop="84dp"
android:id="@+id/button2"
android:onClick="onClick (MainActivity)" />

主要 Activity 代码:

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Button;
import android.widget.EditText;



public class MainActivity extends Activity implements View.OnClickListener{

private TextView textView;
private EditText username;
private EditText password;
private Button accept;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

textView = (TextView) findViewById(R.id.textView3);
username = (EditText) findViewById(R.id.editText);
password = (EditText) findViewById(R.id.editText2);
accept = (Button) findViewById(R.id.button2);
}

public void logIn(View view)
{
Log.i("testUsername", username.getText().toString());
Log.i("testPassword", password.getText().toString());
}

@Override
public void onClick(View view)
{
if((Button)view == accept)
{
Log.i("testUsername", username.getText().toString());
Log.i("testPassword", password.getText().toString());
}
}


}

最佳答案

Why is this?

因为 android:onClick="onClick" 是正确的语法。以下都不是正确的语法:

  • android:onClick="onClick (MainActivity)"
  • android:onClick="onClick (View)"
  • android:onClick="onClick(View)"
  • android:onClick="onClick 和其他"

引用 the documentation for android:onClick :

Name of the method in this View's context to invoke when the view is clicked. This name must correspond to a public method that takes exactly one parameter of type View. For instance, if you specify android:onClick="sayHello", you must declare a public void sayHello(View v) method of your context (typically, your Activity).


好的,在 Twitter 上@HappyRavi 的帮助下,我能够 reproduce the problem .这是一个 IDE 错误,如果您按特定顺序执行操作,将会遇到:

  • 添加要将点击事件路由到的方法
  • Button 拖到 GUI 编辑器中
  • 在 GUI 编辑器的属性 Pane 中单击 onClick 下拉菜单

以不同的顺序执行操作不会重现问题。

幸运的话,他们可以在 Android Studio 2.3 的一些补丁版本中修复这个问题。

关于带有 onClick(MainActivity) 的 Android 按钮 IllegalStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41922616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com