我试图使用SharedPreferences存储我的高分。每次关卡结束时,它将通过发送高分和上下文调用该类。

为了计算分数的位置,我将其与共享偏好中的分数进行核对(总计6)

我的问题是,当我获得高分(nr 1)时,它将自动将相同的分数复制到第二,第三,第四等。这与我所发生的情况不符。 是否不应该先设置变量的值,然后在我的循环中使用这些变量? 仅当highscore为nr 1时,才使用以下语句。其他语句实际上是相同的。

分数课,将从我的游戏课中调用

import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;



public class Scores  {


private SharedPreferences mSharedPrefs;


public  void input(int i,Context a){

 int first=0;
  int second=0;
  int third=0;
  int fourth=0;
  int fifth=0;
  int sixth=0;



mSharedPrefs = PreferenceManager.getDefaultSharedPreferences(a);

sixth=mSharedPrefs.getInt("scoresixth",0);
fifth=mSharedPrefs.getInt("scorefifth",0);  
fourth= mSharedPrefs.getInt("scorefourth",0);
third=mSharedPrefs.getInt("scorethird",0);
second=mSharedPrefs.getInt("scoresecond",0);
first = mSharedPrefs.getInt("scorefirst",0);



if (i>=first){
     SharedPreferences.Editor editor = mSharedPrefs.edit();


     editor.putInt("scoresixth",fifth);

     editor.putInt("scorefifth",fourth);

     editor.putInt("scorefourth",5);

     editor.putInt("scorethird",second);

     editor.putInt("scoresecond",first);

     editor.putInt("scorefirst",i);

      editor.commit();



}

}

现在,在我的游戏课程中,我将分数称为:

public class LevelOne extends GLGame {

    public Screen getStartScreen() {



    return new GameScreen(this);
    }
     class GameScreen extends Screen {
  Scores scorein=new Scores();     ...

 ...     if(score>1499){
          Assets.font.drawText(batchertwo, "    WINNER!!", -200,((1-9/0.4f)/1.5f)*dim);
            win=true;
           scorein.input(score, getApplicationContext());

编辑:我从OpenGL屏幕调用该类。 不知道这是否会影响

上面解决的问题:我从OpenGL屏幕中调用此分数类。 OpenGL屏幕的问题在于,它会不断更新屏幕,因此会在所有这些更新后继续调用score输入法。 这就是为什么我在所有位置都看到自己的最高分的原因。

我只是在OpenGL中创建一个布尔值,在执行一次后将其设置为false / true。 无需担心其他更新。 它的工作原理从未像现在这样。

  ask by Riverside translate from so

本文未有回复,本站智能推荐:

3回复

共享的偏好设置未保存或循环不起作用

一些帮助将是最感谢的。 我有两个活动。 MainActivity和SharedPrefs。 我希望打开的应用程序可以查看是否保存了一些偏好设置。 如果不是,则必须进行其他活动,要求提供一些详细信息。 然后,在按下提交按钮时,它必须保存共享的首选项并转到MainActivity。 但事
2回复

getDefaultSharedPreferences上的NullPointerException

我正在基于开发人员指南创建一个PreferenceFragment ,但是当我尝试恢复保存的用户首选项时,我在onCreate()的getDefaultSharedPreferences()调用中得到一个NullPointerException 。 我从xml中扩充了PreferenceFra
1回复

NullPointerException getDefaultSharedPreferences()

我一直在这行上得到NullPointerException: 我运行了一些东西,我相信我有错误的上下文,因为它在主包的子包中,所以我不认为它可以引用XML首选项文件。 我已经在主程序包中的类中使用了这个,没有任何问题,但由于某种原因,这会导致异常。 完整代码: Lesso
3回复

如何在Arrays.asList()中使用for循环

我坚持使用此代码。 我想用自定义适配器构建一个列表视图。 我将从SharedPreferences中读取数据 工作的代码: 现在,我已经预定义了3个订单。 但是用户将添加更多订单,我将不知道总数(准确地说,我会将总数与数据保存在sharedpreferences中,稍后再阅读
3回复

在方法中使用getDefaultSharedPreferences

因此,我在名为onLoadFinish的方法中使用getdefaultsharedpreferences(它来自android的pdf库)。 这是代码: 因此,代码的主要任务是从example_list首选项(字符串)中获取一个值,将其转换为整数,然后将该整数放入goTopage();
2回复

PreferenceManager.getDefaultSharedPreferences(getBaseContext())上的nullpointer

我试图从数据提供者内部获取数据,因为数据提供者未提供上下文,所以我创建了以下函数: 我已经使用了eclipse调试(连同Log消息)来查找错误点:preferencemanager-line 从另一个班级槽调用: (再次登录进行调试) 谢谢。 编辑:也欢迎用于获
2回复

如何使用android opengl适当地创建更新/绘制循环?

我想使用opengl es在android中编写一些简单的游戏但是在主游戏循环中遇到了麻烦。 正如我在这里读到的: http : //developer.android.com/resources/tutorials/opengl/opengl-es10.html应用程序每次需要重绘表面时都会
1回复

来自PreferenceManager.getDefaultSharedPreferences的空指针异常

这是我创建的应用程序类的代码,我使用它来保持领域数据库的默认配置,并保留2个静态方法来处理SharedPreferences ,其中一个我得到一个NullPointerException 这是MainActivity的类: 当我尝试运行应用程序时,这就是logcat中弹出的内容
2回复

使用GetDefaultSharedPreferences - 在活动之间重置SharedPref值

所以,我的应用程序中有两个活动 - StartActivity和SettingsActivity。 在StartActivity(启动活动)中 - 我从SharedPref读取级别和声音值。 如果它们未设置,我将它们设置为默认值,否则我将获取找到的值。 以下代码位于StartActiv
2回复

Android:类别中的SharedPreferences PreferenceManager.getDefaultSharedPreferences

我想从我的首选项片段中获取一个String到我的android应用程序中的类,但是我无法像平常一样得到它。 我班上的代码: 我试过了: 但是我得到了错误: 第52行是: SharedPreferences prefs = PreferenceManager