尝试启动第二项活动后应用崩溃

时间:2015-08-11 07:23:10

标签: java android xml

当我第一次打开应用程序并使用导航时,它完美运行并将我发送到所需的活动。当我从第二个活动点击导航中的一个选项卡时,整个应用程序崩溃。以下是相关代码:

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的其余部分格式不正确,所以我就把它留了下来。如果有必要,我可以加入。

3 个答案:

答案 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时必须始终发送视图。