java - Android 应用程序在启动后停止工作

标签 java android

当我在 AVD 中启动应用程序时,它停止工作。给我“不幸的是,{app name} 已停止工作。”

这是我运行时的日志:

01-07 10:52:06.162: E/AndroidRuntime(771): FATAL EXCEPTION: main
01-07 10:52:06.162: E/AndroidRuntime(771): java.lang.IllegalStateException: Could not     execute method of the activity
01-07 10:52:06.162: E/AndroidRuntime(771):  at  android.view.View$1.onClick(View.java:3597)
01-07 10:52:06.162: E/AndroidRuntime(771):  at android.view.View.performClick(View.java:4202)
01-07 10:52:06.162: E/AndroidRuntime(771):  at android.view.View$PerformClick.run(View.java:17340)
01-07 10:52:06.162: E/AndroidRuntime(771):  at android.os.Handler.handleCallback(Handler.java:725)
01-07 10:52:06.162: E/AndroidRuntime(771):  at  android.os.Handler.dispatchMessage(Handler.java:92)
01-07 10:52:06.162: E/AndroidRuntime(771):  at android.os.Looper.loop(Looper.java:137)
01-07 10:52:06.162: E/AndroidRuntime(771):  at android.app.ActivityThread.main(ActivityThread.java:5039)
01-07 10:52:06.162: E/AndroidRuntime(771):  at java.lang.reflect.Method.invokeNative(Native Method)
01-07 10:52:06.162: E/AndroidRuntime(771):  at java.lang.reflect.Method.invoke(Method.java:511)
01-07 10:52:06.162: E/AndroidRuntime(771):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
01-07 10:52:06.162: E/AndroidRuntime(771):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
01-07 10:52:06.162: E/AndroidRuntime(771):  at dalvik.system.NativeStart.main(Native Method)
01-07 10:52:06.162: E/AndroidRuntime(771): Caused by: java.lang.reflect.InvocationTargetException
01-07 10:52:06.162: E/AndroidRuntime(771):  at java.lang.reflect.Method.invokeNative(Native Method)
01-07 10:52:06.162: E/AndroidRuntime(771):  at java.lang.reflect.Method.invoke(Method.java:511)
01-07 10:52:06.162: E/AndroidRuntime(771):  at android.view.View$1.onClick(View.java:3592)
01-07 10:52:06.162: E/AndroidRuntime(771):  ... 11 more
01-07 10:52:06.162: E/AndroidRuntime(771): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
01-07 10:52:06.162: E/AndroidRuntime(771):  at com.ultimanaire.MainActivity.playGame(MainActivity.java:38)
01-07 10:52:06.162: E/AndroidRuntime(771):  ... 14 more

这是 MainActivity.java 的代码,当我第一次发布问题时我忘记添加它。有人说第18行,即:

if (sub.isChecked()) {

这是 MainActivity.java 的全部代码:

package com.ultimanaire;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.CheckBox;


public class MainActivity extends Activity {

    String[] subjects = {};

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public void playGame(View view) {
        int r = 0;
       CheckBox t = (CheckBox)findViewById(R.id.subject_math);
        CheckBox y = (CheckBox)findViewById(R.id.subject_science);
        CheckBox u = (CheckBox)findViewById(R.id.subject_history);
        CheckBox i = (CheckBox)findViewById(R.id.subject_foreign_language);
        CheckBox[] stored_subjects =  {t, y, u, i};
        for(CheckBox sub : stored_subjects) {

            if (sub.isChecked()) {
                 subjects[r] = (String) sub.getText();
            r = r +1;
            }

        }

        Intent intent = new Intent(this, GameActivity.class);
        intent.putExtra("SUBJECT", subjects);
        startActivity(intent);
    }

}

所以,我已经弄清楚为什么会发生空指针并修复它,然后它带来了另一个空指针,并设法修复它,但现在又出现了另一个我无法弄清楚的空指针。我将代码编辑为现在修复的方式,以及给出空指针的行。日志猫也更新了。设备上的相同消息给出“不幸的是,appname 已停止工作,但在打开应用程序时不再工作,现在它打开它,但当我使用 playGame 方法作为 onClick 的播放按钮时,它会停止工作。

最佳答案

17:56:19.114: E/AndroidRuntime(901): Caused by: java.lang.NullPointerException 01-04 17:56:19.114: E/AndroidRuntime(901): at com.ultimanaire.MainActivity.(MainActivity.java:18) 01-04 17:56:19.114: 

根据堆栈跟踪,这是由于 MainActivity.java 第 18 行的 NullPointerException 造成的。

没有发布相关代码,因此我们无法预测导致此 NullpointerException 的原因。

关于java - Android 应用程序在启动后停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14163025/

相关文章:

java - GWT CELLTABLE pager 如何确定用户点击了哪个按钮?

java - 按值对 Map<Key, Value> 进行排序

android - android中是否有任何规定可以知道哪个用户应用程序正在使用哪个系统服务

android - 为什么 Jetpack Compose Preview 什么也不显示?

java - 如何在java中将一个枚举转换为另一个枚举?

java - Google Directions Api 似乎无法在 Kotlin 中运行

java - eclipse indigo 中的可运行 jar 创建选项

java - 如何在我的 Android 应用程序中实现 GIF?

android - 错误后插页式自动重新加载?

JetPack Jetifier 的 Android Crashlytics 问题