Использование глобальной переменной внутри класса - PullRequest
0 голосов
/ 28 июня 2018

Я использую Android Studio для проекта API 21 минимум, У меня есть действие с текстовым полем и кнопкой, при нажатии которой я хочу, чтобы текст текстового поля был сохранен на весь срок службы приложения, я использую для этого глобальную переменную.
У меня есть переменная класса, которая расширяет приложение:

package com.example.user.variableglobale;

import android.app.Application;


public class Variable extends Application {

private String chiffre;

public String getChiffre() {
    return this.chiffre;
}

public void setChiffre(String chiffre) {
    this.chiffre = chiffre;
}

внутри моей главной:

   final Variable VG = (Variable) getApplication();
    final TestVar tV = new TestVar();

    btnOk.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            tV.testVar(MainActivity.this);
            VG.setChiffre(String.valueOf(txt.getText()));
        }
    });

и вот класс java, вызываемый кнопкой:

    public class TestVar {

    public void testVar(Context context) {
        Variable VG = (Variable) context.getApplicationContext();

        String temp = VG.getChiffre();

        Toast.makeText(context.getApplicationContext(), "test java VG " + temp, Toast.LENGTH_SHORT).show();
    }
}

Может кто-нибудь объяснить, как использовать глобальную переменную внутри класса Java?
Когда я нажимаю на кнопку, появляется тост со значением «null» для «temp» (кажется, не инициализировано).
В моем примере я попытался с «контекстом», но безрезультатно.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Я думаю, что лучший способ сохранить эту переменную - сохранить ее в общих настройках. Вы можете получить к нему доступ в любом действии, и оно сохраняется, даже если приложение закрыто. Вы можете использовать его без необходимости класса для переменной , как это.

Основной:

static final String CHIFFRE_KEY = "chiffre_key";
final TestVar tV = new TestVar();

btnOk.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        SharedPreferences = getActivity().getPreferences(Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPref.edit();
        editor.putString(CHIFFRE_KEY, String.valueOf(txt.getText()));
        editor.commit();

        tV.testVar(MainActivity.this);
    }
});

и метод testVar будет выглядеть так

public void testVar(Context context) {

    String vg = getActivity().getPreferences(Context.MODE_PRIVATE).getString(CHIFFRE_KEY);

    Toast.makeText(context.getApplicationContext(), "test java VG " + vg, Toast.LENGTH_SHORT).show();
}

Подробнее о общих настройках вы можете прочитать здесь

0 голосов
/ 28 июня 2018

хорошо, наконец-то это работает, внутри моего onclickListener я должен поменять местами объявление переменной и вызов моего класса ... все в порядке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...