Как использовать общие настройки в классе, чтобы настроить все виды деятельности? - PullRequest
0 голосов
/ 11 декабря 2018

Прежде всего: я искал свой вопрос в StackOverflow.

Android - Использование общих настроек в отдельном классе?

И я получаю нулевое ожидание.

Я делаю простую 2D-игру для платформы Android.Я должен установить только одно значение уровня для создания этой игры.Для создания моей игры;Я создал 3 вида деятельности.Первая деятельность;Займет номер уровня и перейдет ко второму (детская площадка).После этого;Если игра пройдена, вторая активность переходит к третьей.И когда пользователь нажимает на кнопку уровень будет вверх (+1).Номер уровня всегда на 1 или 1 больше, чем.Я использовал Shared Preference для сохранения своего значения, но я не работал.Как я могу это сделать?

Вот мои коды:

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 голосов
/ 11 декабря 2018

Вы должны передать 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...