计算android上测验的分数
我正在做一个计算android上测验的分数,android,android-activity,sharedpreferences,Android,Android Activity,Sharedpreferences,我正在做一个测验,因为我有3个活动问题1,问题2,问题3,每个活动有4个可能的答案(按钮),只有一个按钮是正确的。我必须在测验结束时计算并显示用户的分数 我做了一些研究,SharedReferences似乎是解决方案。但是我不知道如何使用它,请任何人帮忙问题1.java代码如下:假设btnAnswer1a是正确答案,如何保存数据,然后在上一个活动中在textview中显示数据 Button Answer1, Answer2, Answer3, Answer4; public static f
测验
,因为我有3个活动问题1
,问题2
,问题3
,每个活动有4个可能的答案(按钮),只有一个按钮是正确的。我必须在测验结束时计算并显示用户的分数
我做了一些研究,SharedReferences
似乎是解决方案。但是我不知道如何使用它,请任何人帮忙<代码>问题1.java代码如下:假设btnAnswer1a
是正确答案,如何保存数据,然后在上一个活动中在textview
中显示数据
Button Answer1, Answer2, Answer3, Answer4;
public static final String PREFS_NAME = "MyPrefsFile";
static SharedPreferences settings;
SharedPreferences.Editor editor;
int ScoreCount;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.answer1);
settings = getSharedPreferences(PREFS_NAME, 0);
editor = settings.edit();
ScoreCount = settings.getInt("ScoreCount", 10);
Answer1 = (Button) findViewById(R.id.btnAnswer1a);
Answer2 = (Button) findViewById(R.id.btnAnswer1b);
Answer3 = (Button) findViewById(R.id.btnAnswer1c);
Answer4 = (Button) findViewById(R.id.btnAnswer1d);
Answer1.setOnClickListener(this);
Answer2.setOnClickListener(this);
Answer3.setOnClickListener(this);
Answer4.setOnClickListener(this);
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
switch (arg0.getId()) {
case R.id.btnAnswer1a:
Intent Screen1 = new Intent(Answer1.this, Color2.class);
Answer1.this.startActivity(Screen1);
editor.putInt("ScoreCount", 6);
editor.commit();
break;
case R.id.btnAnswer1b:
Intent Screen = new Intent(Answer1.this, Color2.class);
Answer1.this.startActivity(Screen);
break;
case R.id.btnAnswer1c:
Intent Screen3 = new Intent(Answer1.this, Color2.class);
Answer1.this.startActivity(Screen3);
break;
case R.id.btnAnswer1d:
Intent Screen2 = new Intent(Answer1.this, Color2.class);
Answer1.this.startActivity(Screen2);
break;
}
我认为如果你在传递信息时有进入的意图会更好。您可以通过以下方式进行:
Intent i = new Intent("com.yourPackage.yourActivity");
i.putExtra("keyForExtra", _ID);
startActivity(i);
一旦创建了结果活动,您就可以
String data = getIntent().getStringExtra("keyForExtra");
您可以将该字符串解析为整数或任何您喜欢的格式
但是,如果要使用共享首选项执行此操作,那么,对于编写:
SharedPreferences settings = getSharedPreferences(YOUR_CUSTOM_PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("myScore", yourScore); // you can put a lot of thngs there.
editor.commit();
看看你还能放些什么
有关共享pref的详细存储文档,请查看,我认为如果您传递信息时带有进入意图,则会更好。您可以通过以下方式进行:
Intent i = new Intent("com.yourPackage.yourActivity");
i.putExtra("keyForExtra", _ID);
startActivity(i);
一旦创建了结果活动,您就可以
String data = getIntent().getStringExtra("keyForExtra");
您可以将该字符串解析为整数或任何您喜欢的格式
但是,如果要使用共享首选项执行此操作,那么,对于编写:
SharedPreferences settings = getSharedPreferences(YOUR_CUSTOM_PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("myScore", yourScore); // you can put a lot of thngs there.
editor.commit();
看看你还能放些什么
有关共享首选项的详细存储文档,请查看当您要向共享首选项写入内容时,请使用以下命令
SharedPreferences sharedPreferences = getSharedPreferences("your_name_of_shared_preferences", 0);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();
editor.putInt("result", resultValue);
editor.commit();
要从他们那里读到一些东西,就这么做
SharedPreferences sharedPreferences = getSharedPreferences("your_name_of_shared_preferences", 0);
int result = sharedPreferences.getInt("result", defaultValue);
resultValue是您的测验结果,如果您没有在该键下向SharedReferences写入任何内容,则需要使用defaultValue。如果您要向SharedReferences写入内容,请使用此选项
SharedPreferences sharedPreferences = getSharedPreferences("your_name_of_shared_preferences", 0);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();
editor.putInt("result", resultValue);
editor.commit();
要从他们那里读到一些东西,就这么做
SharedPreferences sharedPreferences = getSharedPreferences("your_name_of_shared_preferences", 0);
int result = sharedPreferences.getInt("result", defaultValue);
resultValue是您的测验结果,如果您没有在该键下编写任何内容来共享参考,则需要使用defaultValue。您希望每个问题都有不同活动的具体原因吗?对我来说,它似乎效率很低(冗余代码、易出错、内存方面)。您可以将所有问题和答案存储在数组中,并使用ints跟踪当前问题和分数。回答问题后,检查答案,更新分数,增加当前问题,获取新问题和答案,并将其设置为问题文本字段和按钮标签。没有必要这样通过分数,因为所有内容都在一个活动中。是否有特定的原因让您希望每个问题都有不同的活动?对我来说,它似乎效率很低(冗余代码、易出错、内存方面)。您可以将所有问题和答案存储在数组中,并使用ints跟踪当前问题和分数。回答问题后,检查答案,更新分数,增加当前问题,获取新问题和答案,并将其设置为问题文本字段和按钮标签。无需这样通过分数,因为所有内容都在一个活动中。当用户回答测验问题时,您将值写入SharedReferences(代码的第一部分)。在你的每一项活动中都是如此。当您想要显示结果时,您可以从SharedReferences获取值,因此我猜在上一个活动中是这样的。当用户回答您的测验问题时,您可以将值写入SharedReferences(代码的第一部分)。在你的每一项活动中都是如此。当您想要显示结果时,您可以从SharedReferences中获得值,因此我猜是在上一个活动中。有一个图像仅显示3秒钟,然后打开一个活动,询问用户看到了什么。然后,当点击右键时,分数应该变小或增加。是的,冗余代码、易出错和内存方面。我不知道如何使用数组。有一个图像只出现了3秒钟,然后打开一个活动,询问用户看到了什么。然后,当点击右键时,分数应该变小或增加。是的,冗余代码、易出错和内存方面。我不知道如何使用数组。我有一个问题。当按下一个按钮时,另一个活动将出现3秒钟,而不是我将传递值的活动。如果我将代码Intent i=newintent(“com.yourPackage.yourActivity”);i、 putExtra(“keyForExtra”,ID);星触觉(i);应该出现3秒钟的活动不起作用。我不理解这个问题。您必须恢复结果活动中的分数。如果结果活动仅显示3秒钟,然后开始另一个活动本身,则将恢复的分数传递给该活动。为此,您可能希望将恢复的分数变量设置为实例变量。它不是显示3秒的结果活动。有一个图像只出现了3秒钟,然后打开一个活动,询问用户看到了什么。然后,当点击右键时,分数应该变小或增加。你在哪里显示图像?你能详细说明一下工作流程图吗?我的理解是:有一个活动,其中一个图像显示3秒钟,然后要求用户输入他所看到的内容。同一活动需要输入。输入时,整个过程重复,分数根据需要递增/递减。如果是这种情况,在第一个活动中,将分数设置为0。将其设置为实例变量。然后将其传递到下一个活动,在那里检索,存储在一个实例varibale中,在获得Answer后,更新并传递它。重复,直到我有问题为止。当按下一个按钮时,另一个活动将出现3秒钟,而不是我将传递值的活动。如果我将代码Intent i=newintent(“com.yourPackage.yourActivity”);i、 putExtra(“keyForExtra”,ID);星触觉(i);应该出现3秒钟的活动不起作用。我不明白
Button Answer1, Answer2, Answer3, Answer4;
public static final String PREFS_NAME = "MyPrefsFile";
static SharedPreferences settings;
SharedPreferences.Editor editor;
int ScoreCount;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.answer1);
settings = getSharedPreferences(PREFS_NAME, 0);
editor = settings.edit();
ScoreCount = settings.getInt("ScoreCount", 10);
Answer1 = (Button) findViewById(R.id.btnAnswer1a);
Answer2 = (Button) findViewById(R.id.btnAnswer1b);
Answer3 = (Button) findViewById(R.id.btnAnswer1c);
Answer4 = (Button) findViewById(R.id.btnAnswer1d);
Answer1.setOnClickListener(this);
Answer2.setOnClickListener(this);
Answer3.setOnClickListener(this);
Answer4.setOnClickListener(this);
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
switch (arg0.getId()) {
case R.id.btnAnswer1a:
Intent Screen1 = new Intent(Answer1.this, Color2.class);
Answer1.this.startActivity(Screen1);
editor.putInt("ScoreCount", 6);
editor.commit();
break;
case R.id.btnAnswer1b:
Intent Screen = new Intent(Answer1.this, Color2.class);
Answer1.this.startActivity(Screen);
break;
case R.id.btnAnswer1c:
Intent Screen3 = new Intent(Answer1.this, Color2.class);
Answer1.this.startActivity(Screen3);
break;
case R.id.btnAnswer1d:
Intent Screen2 = new Intent(Answer1.this, Color2.class);
Answer1.this.startActivity(Screen2);
break;
}