1

我正在做一个quiz,因为我有 3 个活动,,,,每个Question1都有4 个可能的答案(按钮),只有一个按钮是正确的。我必须在测验结束时计算并显示用户的分数。Question2Question3

我做了一些研究,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;


}
4

3 回答 3

1

我认为如果你传递信息的意图会更好。你可以这样做:

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();

要了解您还可以放什么,请看这里

SharedPreferences settings = getSharedPreferences(YOUR_CUSTOM_PREFS_NAME, 0);
int currentScore = settings.getInt("myScore", defaultValue);

有关共享首选项的详细存储文档,请查看此处

于 2012-10-15T09:58:56.040 回答
0

是否有特定的原因让您希望针对每个问题进行不同的活动?对我来说似乎效率很低(冗余代码,容易出错,内存明智)。您可以将所有问题和答案存储在数组中,并使用整数跟踪当前问题和分数。回答问题后,检查答案、更新分数、增加当前问题、获取新问题和答案并将其设置为问题文本字段和按钮标签。无需以这种方式通过分数,因为所有内容都保留在一项活动中。

于 2012-10-15T10:14:01.517 回答
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 。

于 2012-10-15T10:02:27.767 回答