当我按下按钮时,应用程序崩溃(这是xml文件)
<Button
android:text="Beginn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/startButton"
android:onClick="getJson"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
按下按钮时运行的代码。
public void getJson(){
editSummoner =(EditText) findViewById(R.id.editSummoner);
if (editSummoner.getText().length() == 0){
Toast.makeText(getBaseContext(),"Please enter a summoner name",
Toast.LENGTH_LONG).show();
}
else if (editSummoner.getText().length() >= 1) {
Toast.makeText(getBaseContext(),"Summoner name is " + editSummoner.getText().toString(),
Toast.LENGTH_LONG).show();
}
}
欢迎任何建议,我查看了所有其他代码并没有发现任何错误。此外,当删除此部分代码但该按钮无法正常工作时,该应用程序仍可正常工作。
崩溃报告(Android监视器):
11-15 20:56:20.137 29501-29501/com.example.user.lolstats E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.user.lolstats, PID: 29501
java.lang.IllegalStateException: Could not find method getJson(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'startButton'
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284)
at android.view.View.performClick(View.java:5702)
at android.widget.TextView.performClick(TextView.java:10888)
at android.view.View$PerformClick.run(View.java:22541)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7229)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
答案 0 :(得分:1)
期望方法k
的参数为getJson(View)
,您定义了一个没有参数的方法View
。
答案 1 :(得分:0)
您必须为您的方法提供View参数。 将您的方法更改为:
public void getJson(View v){
editSummoner =(EditText) findViewById(R.id.editSummoner);
if (editSummoner.getText().length() == 0){
Toast.makeText(getBaseContext(),"Please enter a summoner name",
Toast.LENGTH_LONG).show();
}
else if (editSummoner.getText().length() >= 1) {
Toast.makeText(getBaseContext(),"Summoner name is " + editSummoner.getText().toString(),
Toast.LENGTH_LONG).show();
}
}
答案 2 :(得分:0)
你应该尝试相反的方式。
从xml文件中删除onClick行。并以编程方式将按钮与方法粘合在一起:
在你的onCreate方法中:
Button startButton = (Button) findViewById(R.id.startButton);
startButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
getJson(); // or you can write here the actual code.
}
});