Как я могу иметь переменную, которая рассказывала бы мне каждый раз, когда я называю тот же Activity в Андроид Студио?

Я хотел бы знать, существует ли возможность иметь переменную, которая рассказывала бы мне и суммировала в одном каждый раз, когда я выполняю тот же Activity. После того, как А именно, инициализирую мое приложение я нахожусь в моем MainActivity.java, потом посредством Intent мне хотелось бы вновь называть тот же Activity и мочь "Считать" через переменную все разы назвало этот Activity. Чтобы быть яснее, здесь я показываю пример:

В моем классе Java

// import
public class MainActivity extends AppCompatActivity{
int cont=0
Intent i;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pregunta1);
        i = new Intent(MainActivity.this, MainActivity.class);
......// Codigo de mi aplicación
        cont = cont + 1 // La primera vez que se ejecute, cont=1
        startActivity(i);
}

Потом выполнив во второй раз мой Activity, моя переменная cont должна бы быть равна 2. Существует какой-то способ мочь реализовывать это? Спасибо. Pd: Решение, которое я ищу, состоит в том, чтобы весь мой код находился внутри того же Activity, и я не хочу, чтобы решение состояло в том, чтобы переходить с другим из одного Activity.

1
задан 04.11.2019, 20:12
3 ответа

Обрежь делать это со свойством estГЎtica, например, в твоем MainActivity podrГ-схвати объявлять ее asГ-:

public static int Opened;

И потом увеличивать asГ -

MainActivity.Opened++;
1
ответ дан 01.12.2019, 12:48

ты Можешь реализовывать это определяя переменную, которую ты использовал как счетчик типа static,

private static int cont = 0; 

и увеличение ты можешь реализовывать это посредством:

cont = cont + 1;

или посредством:

cont = cont++;

Пример:

public class MainActivity extends AppCompatActivity{

private static int cont=0; 
private Intent i;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pregunta1);
        i = new Intent(MainActivity.this, MainActivity.class);
        ...
        cont = cont + 1;
        startActivity(i);
}

, Но есть что-то важное, чтобы созерцать, если ты хочешь, чтобы эта стоимость сохранилась, одна opciГіn состоит в том, чтобы сохранять эту стоимость в предпочтениях, так как можешь посылать во второй план ты aplicaciГіn, и стоимость cont может быть возобновленной благодаря тому, что операционная система может требовать памяти для других приложений или процессов и первого, что разрушен звук точно статические переменные .

Для этого sobreecribe они mГ©todos тебя Activity, onPause(), чтобы сохранять стоимость и onResume() где obtendrГЎs сохраняемая стоимость.

    @Override
    protected void onPause() {
        super.onPause();

    //Guarda valor de variable cont.
    SharedPreferences prefs = getSharedPreferences("MisPreferencias", Context.MODE_PRIVATE);
     SharedPreferences.Editor editor = prefs.edit();
     editor.putInt("contador", cont);
     editor.apply();

    }


@Override
public void onResume(){
    super.onResume();

    //Obtiene valor guardado para la variable cont.
    SharedPreferences prefs = getSharedPreferences("MisPreferencias",  Context.MODE_PRIVATE); 
    cont = prefs.getInt("contador", 0);

}
2
ответ дан 01.12.2019, 12:48

Гєnica soluciГіn надежная состоит в том, чтобы приносить счетчик в SharedPreferences. Необязательно, если ты хочешь, чтобы этот счетчик вернулся в 0 с каждым началом ее aplicaciГіn, тогда ты можешь resetearlo в onCreate () твоего класса app, которая обычно deberГЎ увеличивать MultiDexApplication. Аспект класса главного Application podrГ, - чтобы быть следующим:

public class MyApp extends MultiDexApplication {
    public static MyApp sInstance = null;

    public static MyApp getInstance() {
        return sInstance;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        sInstance = this;
        setMainActivityCounter(0); // TODO: borrar esta línea si no se debe resetear nunca
    }

    @SuppressLint("ApplySharedPref")
    public static void setMainActivityCounter(final int newValue) {
        SharedPreferences prefs = getInstance().getSharedPreferences("MyAppPreferences", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = prefs.edit();
        editor.putInt("MainActivityCounter", newValue);
        editor.commit();
    }

    // TODO: llamar desde cualquier lugar donde queramos consultar el contador
    public static int getMainActivityCounter() {
        SharedPreferences prefs = getInstance().getSharedPreferences("MyAppPreferences", Context.MODE_PRIVATE);
        return prefs.getInt("MainActivityCounter", 0);
    }

    // TODO: llamar desde MainActivity.onCreate()
    public static void increaseMainActivityCounter() {
        setMainActivityCounter(getMainActivityCounter() + 1);
    }
}
-1
ответ дан 01.12.2019, 12:48

Теги

Похожие вопросы