gpt4 book ai didi

java - 如何将一个元素从一个 Activity 和另一个 Activity 添加到数组列表

转载 作者:行者123 更新时间:2023-12-02 01:37:59 25 4
gpt4 key购买 nike

我正在制作一个包含多项选择题的应用程序。每个问题都有自己的 Activity ,例如 QuestionTwoActivity。每次用户单击按钮(例如答案 A 的按钮)时,会将用户移至下一个 Activity ,例如从 QuestionTwoActivityQuestionThreeActivity。如果答案正确,分数将增加 3 分。共有 10 个问题,总分为 30 分。

我的应用程序的这一部分运行良好,但当我想要在 GradeActivity 上显示最终预览时,问题就出现了,该预览最初只显示用户的最终成绩。我想向成绩 Activity 添加一个列表,显示用户对每个问题的答案,以及用户是否回答正确,因此我制作了一个自定义 arrayAdapter 来填充列表,然后尝试使用每个答案的 onclick 方法根据回答的问题向 arrayadapter 的 arraylist 添加元素,但它导致应用程序崩溃

以下是 gradeActivity 的代码,仅在回答完第十个问题后才打开:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;

public class Grade extends AppCompatActivity{

examark mExamGrade; // declaring an instance of the examark class to call getMark method
double mark; // an int object to store the exam mark in it
TextView mGradeTextView;
TextView mNameTextView;
ListView mPreviewListView;
static ArrayList<answers_preview_data> mPreviewArrayList;
PreviewAdapter mPreviewAdapter;
examark name;

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

int colorRed = getResources().getColor(R.color.colorRed);
int colorOrange = getResources().getColor(R.color.colorOrange);
int colorYellow = getResources().getColor(R.color.colorYellow);
int colorGreen = getResources().getColor(R.color.colorGreen);

mExamGrade = new examark();
name = new examark();

mark = mExamGrade.getExamMark();// storing the exam mark in the mark variable

mGradeTextView = (TextView) findViewById(R.id.grade); // initializing the view responsible for showing the final mark

mGradeTextView.setText(String.valueOf(mark));

mNameTextView = (TextView) findViewById(R.id.name_text_view);

String nameOfQuizzer = name.getNameOfQuizTaker();

mNameTextView.setText(nameOfQuizzer);

mPreviewArrayList = new ArrayList<answers_preview_data>();
mPreviewAdapter = new PreviewAdapter(this, mPreviewArrayList);
mPreviewListView = (ListView) findViewById(R.id.preview_list);
mPreviewListView.setAdapter(mPreviewAdapter);

// a conditional statement to change the color of the grade based on how good the preformence
if ( mark > 0.0 && mark < 10.0 ) {

mGradeTextView.setTextColor(colorRed);

} else if (mark > 10.0 && mark <= 15.0) {

mGradeTextView.setTextColor(colorOrange);

} else if (mark > 15.0 && mark < 20.0) {

mGradeTextView.setTextColor(colorYellow);
} else if (mark > 20.0) {

mGradeTextView.setTextColor(colorGreen);
}
}
}

以下是 onclickListner 的答案之一的代码:

mAnswerATextView.setText("A-Labour Party");

mAnswerATextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Grade.mPreviewArrayList.add(new answers_preview_data("1", "the answer of question A" , " the true answer of question 1", R.color.colorGreen, R.drawable.correct));
Intent openQuestion = new Intent(QuestionOne.this ,QuestionTwo.class);
startActivity(openQuestion);
mExamark.incrementMark();
}
});

以下是单击应答按钮时调试器菜单显示的内容:

E/AndroidRuntime: FATAL EXCEPTION: main  
Process: com.example.admin.xams, PID: 16254
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference
at com.example.admin.xams.QuestionOne$1.onClick(QuestionOne.java:52)
at android.view.View.performClick(View.java:4848)
at android.view.View$PerformClick.run(View.java:20270)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5667)
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:962)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)

有没有办法在打开包含数组列表的 Activity (设置为 onCreate)之前将其他 Activity 中的元素添加到数组列表?

最佳答案

您可以实现以下选项之一:

  • 不好但很快 - 在 Activity 的构造函数中初始化列表,而不是 onCreate() 方法
  • 正确但缓慢 - 将您的值存储在数据库中并在需要时获取

关于java - 如何将一个元素从一个 Activity 和另一个 Activity 添加到数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54935587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com