Я хотел бы знать, существует ли возможность иметь переменную, которая рассказывала бы мне и суммировала в одном каждый раз, когда я выполняю тот же 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.
Обрежь делать это со свойством estГЎtica, например, в твоем MainActivity podrГ-схвати объявлять ее asГ-:
public static int Opened;
И потом увеличивать asГ -
MainActivity.Opened++;
ты Можешь реализовывать это определяя переменную, которую ты использовал как счетчик типа 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);
}
Гє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);
}
}