繁体   English   中英

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

[英]How to use Shared Preferences in class to set all activities?

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

Android-在单独的类中使用共享首选项?

而且我没有得到期望。

我正在为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();
        }
    });

Third的按钮活动转到first:

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





        }
    });

您应该通过构造函数将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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM