我正在进行quiz
,因为我有3项活动Question1
,Question2
,Question3
,每项活动有4个可能的答案(按钮),仅一个按钮是正确的。我必须在测验结束时计算并显示用户的分数。
我做了一些研究,SHAREDPREFERENECES
似乎是解决方案。但我不知道如何使用它可以任何人帮助请。 Question1.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;
}
答案 0 :(得分:1)
我认为如果你通过go in intent传递信息会更好。你可以这样做:
Intent i = new Intent("com.yourPackage.yourActivity");
i.putExtra("keyForExtra", _ID);
startActivity(i);
和onCreate结果活动
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();
要了解您可以放置的其他内容,请查看here
SharedPreferences settings = getSharedPreferences(YOUR_CUSTOM_PREFS_NAME, 0);
int currentScore = settings.getInt("myScore", defaultValue);
有关共享首选项的详细存储文档,请查看here
答案 1 :(得分:0)
如果您想向SharedPreferences写一些内容,请使用此
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是你的测验结果,当你没有向该键下的sharedPreferences写任何东西时,需要使用defaultValue。
答案 2 :(得分:0)
您是否有特殊原因要求针对每个问题进行不同的活动?对我来说这似乎效率很低(冗余代码,容易出错,内存明智)。您可以将所有问题和答案存储在数组中,并使用整数跟踪当前问题和分数。当问题得到解答时,请检查答案,更新分数,增加当前问题,获取新问题和答案,并将其设置为问题文本字段和按钮标签。没有必要以这种方式传递分数,因为一切都在一项活动中。