如何在课堂上使用共享偏好设置所有活动?

时间:2018-12-10 22:26:51

标签: android class sharedpreferences

首先:我在StackOverflow中搜索了我的问题。

Android - Using Shared Preferences in separate class?

我得到的期望值是零。

我正在为Android平台制作一个简单的2D游戏。我只需要设置一个关卡值就可以制作这款游戏​​。为了制作我的游戏;我创建了3个活动。第一次活动;取得级别编号,然后传递到第二个级别(操场)。之后;游戏已通过,第二项活动已传递到第三项。并且当用户单击到按钮时,级别将上升(+1)。级别数字始终大于1或1。我曾经使用“共享首选项”来保存我的值,但我无法正常工作。我该怎么办?

这是我的代码:

public class shared_level {
   int level = 1;

    private static Context context;



    public int getLevel() {
        return level;
    }

    public void setLevel(int level) {
        this.level = level;
    }

    public final static String PREFS_NAME = "Level_preference_name";


    public static void setInt( String key, int level) {
        SharedPreferences sharedPref = context.getSharedPreferences(PREFS_NAME,0);
        SharedPreferences.Editor editor = sharedPref.edit();
        editor.putInt(key, level);
        editor.apply();
    }

    public static int getInt(String key) {
        SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, 0);
        return prefs.getInt(key, 0 );
    }


}

第一次活动:

 final shared_level shared_level =new shared_level();

    Toast.makeText(this, "" + shared_level.getLevel(), Toast.LENGTH_SHORT).show();




    pass_to_second.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent git = new Intent(getApplicationContext(), second.class);
            git.putExtra("level" ,String.valueOf(shared_level.getLevel())  );
            startActivity(git);
            MainActivity.this.finish();



        }
    });
}

第二活动:

Bundle extras = getIntent().getExtras();
    final String value = extras.getString("level");

    Toast.makeText(this, "Level is : " + "   " + value, Toast.LENGTH_SHORT).show();



    sayı.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent git = new Intent(getApplicationContext(), third.class);
            git.putExtra("level", String.valueOf(value));
            startActivity(git);

            second.this.finish();
        }
    });

第三个按钮活动进入第一个:

Bundle extras = getIntent().getExtras();
    final String value = extras.getString("level");


   final shared_level shared_level =new shared_level();

    int new_level =Integer.valueOf(value) + 1;

  shared_level.setLevel(new_level);

 Toast.makeText(this, "" + shared_level.getLevel(), Toast.LENGTH_SHORT).show();


    sayım.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {


            Intent i = new Intent(getApplicationContext(),MainActivity.class);
            startActivity(i);
            third.this.finish();





        }
    });

1 个答案:

答案 0 :(得分:1)

您应该通过构造函数将context传递给shared_level类。

public class shared_level {
    private Context context;

    public shared_level(Context context) {
            this.context = context;
        }
    ...
}

并创建shared_level类的实例,例如:

final shared_level shared_level = new shared_level(yourActivity.this);