【问题标题】:java.lang.IllegalStateException: Could not execute method for android:onClick in androidjava.lang.IllegalStateException:无法在 android 中执行 android:onClick 的方法
【发布时间】:2016-12-17 07:25:55
【问题描述】:

我对 Android 还很陌生,正在创建我的第一个应用程序。我正在使用以下代码:

public class MainActivity extends AppCompatActivity {

int netScore = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void addOne(View view) {
   netScore = netScore + 1;
    displayScore(netScore);
}

private void displayScore(int printScore) {
    TextView varScore = (TextView) findViewById(R.id.score);
    varScore.setText(printScore);
}

}

当我点击按钮时,它会在调试中抛出这个错误:

FATAL EXCEPTION: main

java.lang.IllegalStateException: Could not execute method for android:onClick
                                                                               at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
                                                                               at android.view.View.performClick(View.java:5198)
                                                                               at android.view.View$PerformClick.run(View.java:21147)
                                                                               at android.os.Handler.handleCallback(Handler.java:739)
                                                                               at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                               at android.os.Looper.loop(Looper.java:148)
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                               at java.lang.reflect.Method.invoke(Native Method)
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                            Caused by: java.lang.reflect.InvocationTargetException
                                                                               at java.lang.reflect.Method.invoke(Native Method)
                                                                               at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
                                                                               at android.view.View.performClick(View.java:5198) 
                                                                               at android.view.View$PerformClick.run(View.java:21147) 
                                                                               at android.os.Handler.handleCallback(Handler.java:739) 
                                                                               at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                               at android.os.Looper.loop(Looper.java:148) 
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                               at java.lang.reflect.Method.invoke(Native Method)

有人知道这个错误吗?

【问题讨论】:

  • onclick 按钮的代码在哪里?绑定按钮在哪里??
  • 是的,我将其用作:
  • 发布您的完整代码
  • 感谢您的帮助。这对我有用: varScore.setText(String.valueOf(printScore))

标签: java android textview


【解决方案1】:

是否尝试像这样在 xml-layout 中添加 onClick?

android:onClick="method"

如果是这样,请确保没有错别字。 在你的情况下,它可能是:

android:onClick="addOne"

您还可以通过编程方式侦听点击事件。查看this

【讨论】:

  • 是的,我将其用作:
  • 试试 varScore.setText(""+printScore);
  • 或者更好的选择是 varScore.setText(String.valueOf(printScore))
  • 谢谢。这有效: varScore.setText(String.valueOf(printScore))
【解决方案2】:

您可以在 OnCreate 方法中设置 TextView:

TextView varScore = (TextView) findViewById(R.id.score);

然后将 ClickListener 添加到 varScore

enter code here
varScope.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
         // do anything whatever you want
    }
});

首先,尝试在onCreate方法中启动TextView

顺便说一句,您能否向我们展示您的 .xml 文件?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    相关资源
    最近更新 更多