当我第一次打开应用程序并使用导航时,它完美运行并将我发送到所需的活动。当我从第二个活动点击导航中的一个选项卡时,整个应用程序崩溃。以下是相关代码:
MainActivity.java
public void CMYKClick(View view) {
Intent intent = new Intent(this, CMYKActivity.class);
startActivity(intent);
}
public void hexClick(View view) {
Intent intent = new Intent(this, hexActivity.class);
startActivity(intent);
}
CMYKActivity.java
public void RGBClickCMYK() {
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
}
public void HexClickCMYK() {
Intent intent = new Intent(this, hexActivity.class);
startActivity(intent);
}
hexActivity.java
public void RGBClickHex() {
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
}
public void CMYKClickHex() {
Intent intent = new Intent(this, CMYKActivity.class);
startActivity(intent);
}
最后这里是logcat:
08-11 17:17:35.925 2001-2001/com.example.michael.colorpicker E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.michael.colorpicker, PID: 2001
java.lang.IllegalStateException: Could not find a method CMYKClickHex(View) in the activity class com.example.michael.colorpicker.hexActivity for onClick handler on view class android.support.v7.widget.AppCompatButton with id 'CMYKNavBtn'
at android.view.View$1.onClick(View.java:4007)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.NoSuchMethodException: CMYKClickHex [class android.view.View]
at java.lang.Class.getMethod(Class.java:664)
at java.lang.Class.getMethod(Class.java:643)
at android.view.View$1.onClick(View.java:4000)
logcat的其余部分格式不正确,所以我就把它留了下来。如果有必要,我可以加入。
答案 0 :(得分:3)
您的方法签名应为:
public void CMYKClickHex(View view) { ... }
而不是:
public void CMYKClickHex(//Nothing) { ... }
答案 1 :(得分:1)
方法名称应以小写字母开头。
你必须在xml文件中为onClick提供onClick。方法应该具有视图参数并且调用与您为onClick属性指定的名称相同的方法。
这样的事情:
CMYKActivity.java
public void rgbClickCMYK(View view) {
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
}
public void hexClickCMYK(View view) {
Intent intent = new Intent(this, hexActivity.class);
startActivity(intent);
}
答案 2 :(得分:0)
将public void CMYKClickHex()
更改为public void CMYKClickHex(View view)
。
使用onClick时必须始终发送视图。