Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.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_Android Activity_Sharedpreferences - Fatal编程技术网

计算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;


}