Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中运行时的空指针异常_Android - Fatal编程技术网

Android中运行时的空指针异常

Android中运行时的空指针异常,android,Android,我想从原始文件夹中写入.txt文件。在点击任何一个按钮后,我在活动上添加了12个按钮,这是一个获取空指针异常,并且不会从原始文件夹中写入.txt文件 这是代码 public class QuestionActivity extends Activity { RadioButton answer1; RadioButton answer2; RadioButton answer3; RadioButton answer4; RadioGroup answe

我想从原始文件夹中写入.txt文件。在点击任何一个按钮后,我在活动上添加了12个按钮,这是一个获取空指针异常,并且不会从原始文件夹中写入.txt文件

这是代码

public class QuestionActivity extends Activity {

    RadioButton answer1;
    RadioButton answer2;
    RadioButton answer3;
    RadioButton answer4;
    RadioGroup answers;
    int correctAns[];
    Button finish;
    private android.view.View.OnClickListener finishListener;
    Button next;
    Button prev;

    private android.view.View.OnClickListener nextListener;
    int numEvents;

    private android.view.View.OnClickListener prevListener;
    int quesIndex;
    EditText question;
    boolean review;
    int selected[];
    int selectedAnswer;

    public QuestionActivity() {

        question = null;
        answer1 = null;
        answer2 = null;
        answer3 = null;
        answer4 = null;
        answers = null;
        finish = null;
        selectedAnswer = -1;
        quesIndex = 0;
        numEvents = 0;
        selected = null;
        correctAns = null;
        review = false;
        next = null;


        nextListener = new android.view.View.OnClickListener() {

            public void onClick(View view) {
                setAnswer();
                QuestionActivity questionactivity = QuestionActivity.this;
                questionactivity.quesIndex = 1 + questionactivity.quesIndex;
                if (quesIndex >= ComputerActivity.getQuesList().length())
                {
                    quesIndex = -1 + ComputerActivity.getQuesList().length();
                }
                showQuestion(quesIndex, review);
            }

        };
        prevListener = new android.view.View.OnClickListener() {

            public void onClick(View view) {
                setAnswer();
                QuestionActivity questionactivity = QuestionActivity.this;
                questionactivity.quesIndex = -1 + questionactivity.quesIndex;
                if (quesIndex < 0)
                {
                    quesIndex = 0;
                }
                showQuestion(quesIndex, review);
            }

        };
    }

    private void setAnswer() {
        if (answer1.isChecked()) {
            selected[quesIndex] = 0;
        }
        if (answer2.isChecked()) {
            selected[quesIndex] = 1;
        }
        if (answer3.isChecked()) {
            selected[quesIndex] = 2;
        }
        if (answer4.isChecked()) {
            selected[quesIndex] = 3;
        }
        Log.d("", Arrays.toString(selected));
        Log.d("", Arrays.toString(correctAns));
    }

    private void setScoreTitle() {
        setTitle((new StringBuilder("Bank GK-I   ")).append(1 + quesIndex)
                .append("/").append(ComputerActivity.getQuesList().length())
                .toString());
    }

    private void showQuestion(int i, boolean flag)
    {
        try 
        {
            JSONObject jsonobject = ComputerActivity.getQuesList().getJSONObject(i);
            String s = jsonobject.getString("Question");

            if (correctAns[i] == -1)
            {
                String s5 = jsonobject.getString("CorrectAnswer");
                correctAns[i] = Integer.parseInt(s5);
            }

            question.setText(s.toCharArray(), 0, s.length());
            answers.check(-1);
            answer1.setTextColor(-1);
            answer2.setTextColor(-1);
            answer3.setTextColor(-1);
            answer4.setTextColor(-1);

            JSONArray jsonarray = jsonobject.getJSONArray("Answers");
            String s1 = jsonarray.getJSONObject(0).getString("Answer");
            answer1.setText(s1.toCharArray(), 0, s1.length());

            String s2 = jsonarray.getJSONObject(1).getString("Answer");
            answer2.setText(s2.toCharArray(), 0, s2.length());

            String s3 = jsonarray.getJSONObject(2).getString("Answer");
            answer3.setText(s3.toCharArray(), 0, s3.length());

            String s4 = jsonarray.getJSONObject(3).getString("Answer");
            answer4.setText(s4.toCharArray(), 0, s4.length());
            Log.d("",(new StringBuilder(String.valueOf(selected[i]))).toString());

            if (selected[i] == 0) {
                answers.check(0x7f060013);
            }
            if (selected[i] == 1) {
                answers.check(0x7f060014);
            }
            if (selected[i] == 2) {
                answers.check(0x7f060015);
            }
            if (selected[i] == 3) {
                answers.check(0x7f060016);
            }
            setScoreTitle();
            if (quesIndex == -1 + ComputerActivity.getQuesList().length()) {
                next.setEnabled(false);
            }
            if (quesIndex == 0) {
                prev.setEnabled(false);
            }
            if (quesIndex > 0) {
                prev.setEnabled(true);
            }
            if (quesIndex < -1 + ComputerActivity.getQuesList().length()) {
                next.setEnabled(true);
            }
        } catch (Exception exception) {
            Log.e(getClass().toString(), exception.getMessage(),
                    exception.getCause());
            return;
        }
        if (!flag) {

        }
        Log.d("review", (new StringBuilder(String.valueOf(selected[i])))
                .append(correctAns[i]).toString());
        if (selected[i] != correctAns[i]) {
            if (selected[i] == 0) {
                answer1.setTextColor(0xffff0000);
            }
            if (selected[i] == 1) {
                answer2.setTextColor(0xffff0000);
            }
            if (selected[i] == 2) {
                answer3.setTextColor(0xffff0000);
            }
            if (selected[i] == 3) {
                answer4.setTextColor(0xffff0000);
            }
        }
        if (correctAns[i] == 0) {
            answer1.setTextColor(0xff00ff00);
        }
        if (correctAns[i] == 1) {
            answer2.setTextColor(0xff00ff00);
        }
        if (correctAns[i] == 2) {
            answer3.setTextColor(0xff00ff00);
        }
        if (correctAns[i] == 3) {
            answer4.setTextColor(0xff00ff00);
        }
    }

    public void onCreate(Bundle bundle)
    {
        super.onCreate(bundle);
        setContentView(R.layout.question);

                question = (EditText)findViewById(R.id.question);
                answers = (RadioGroup)findViewById(R.id.answers);
                answer1 = (RadioButton)findViewById(R.id.a0);
                answer2 = (RadioButton)findViewById(R.id.a1);
                answer3 = (RadioButton)findViewById(R.id.a2);
                answer4 = (RadioButton)findViewById(R.id.a3);

                ((Button)findViewById(R.id.finish)).setOnClickListener(finishListener);

                prev = (Button)findViewById(R.id.Prev);
                prev.setOnClickListener(prevListener);

                next = (Button)findViewById(R.id.Next);
                next.setOnClickListener(nextListener);

                selected = new int[GAActivity.getQuesList().length()];
                Arrays.fill(selected, -1);

                correctAns = new int[GAActivity.getQuesList().length()];
                Arrays.fill(correctAns, -1);

                showQuestion(0, review);

    }

}
这是活动代码

   private void loadQuestions() throws Exception
    {
        StringBuilder stringbuilder;
        bReader = new BufferedReader(new InputStreamReader(getBaseContext().getResources().openRawResource(R.raw.ga)));
        stringbuilder = new StringBuilder();

        String s = bReader.readLine();
        if (s == null)
        {

            try
            {
                Log.d(getClass().toString(), stringbuilder.toString());
                quesList = (new JSONObject(stringbuilder.toString())).getJSONArray("Questions");
                Log.d(getClass().getName(), (new StringBuilder("Num Questions ")).append(quesList.length()).toString());
            }
            catch (Exception exception2)
            {
                try
                {
                    bReader.close();
                    return;
                }
                catch (Exception exception3)
                {
                    Log.e("", exception3.getMessage().toString(), exception3.getCause());
                }
                return;
            }
            finally { }

            try
            {
                bReader.close();
                return;
            }
            catch (Exception exception4)
            {
                Log.e("", exception4.getMessage().toString(), exception4.getCause());
            }

        }
        stringbuilder.append(s);

        try
        {
            bReader.close();
        }

        catch (Exception exception1)
        {
            Log.e("", exception1.getMessage().toString(), exception1.getCause());
        }

    }

我可以想象错误出现在
onCreate()
方法的以下行中:

((Button)findViewById(R.id.finish)).setOnClickListener(finishListener);
您没有定义
setOnClickListener
注册到的按钮

看到您已声明一个名为“finish”的按钮,请将代码更改为:

finish = (Button)findViewById(R.id.finish);
finish.setOnClickListener(finishListener);
还有一件事: 据我所知,您的
GAActivity
缺少
getQuesList()
方法,因此它正在崩溃


我会想象你看代码-注意底部有一个
getquesslist()
方法-你的代码中没有这个方法。

行QuestionActivity.java:312是什么?你的问题在第312行,第312行是-selected=new int[GAActivity.getquesslist().length()];数组。填充(选中,-1);您确定要在“选定”中获取值吗?尝试调试代码并验证您是否获得所选的变量值。实际上,当我单击任何按钮时,我的应用程序都会崩溃。不在日志上打印任何内容cat only print's={'
finish = (Button)findViewById(R.id.finish);
finish.setOnClickListener(finishListener);