Я знаю, что в андроидах уже есть некоторые вопросы о глобальных методах и переменных, но я столкнулся с проблемами со статическими методами, вероятно, из-за моего меньшего опыта с объектно-ориентированным программированием. Итак, вот что я хочу:Использование методов во всех действиях в android
Я пишу приложение, которое подсчитывает очки, которые пользователь может заработать для определенных вещей, которые он делает. Из-за этого я хочу вызвать метод addPoints
из разных видов деятельности и услуг. Этот метод также должен указывать текстовое представление точек в основном действии и некоторых других вещах.
я понял, добавив статическую переменную
static int sPoints;
в MainActivity, что я использую в качестве «глобальной» переменной в каждой деятельности. Однако, с методом addPoints
у меня есть некоторые проблемы. Если я использую нестатический метод, я должен создать экземпляр MainActivity в других действиях, что не очень приятно, и изменение значений этого экземпляра не влияет на фактическую MainActivity.
Если я использую статическую функцию она отлично работает до тех пор, пока я не хочу использовать не статические методы, как в этом примере:
public static void addPoints(Context context, int points){
int levelBefore, levelAfter;
levelBefore = getLevelFromPoints(sPoints);
sPoints = sPoints + points;
levelAfter = getLevelFromPoints(sPoints);
if(levelBefore!=levelAfter){
String rank = getRankFromLevel(levelAfter);
levelTextView.setText("Lvl. " + String.valueOf(levelAfter));
Toast.makeText(context, "Congrats! You reached the next level!", Toast.LENGTH_LONG).show();
}
}
Здесь я не могу легко использовать levelTextView.setText и Я столкнулся с этой проблемой во многих других случаях. Более того, я читал, что использование статических методов в любом случае не очень хорошо.
Как правильно создать экземпляр MainActivity каждый раз, а затем вызвать addPoints
на нем, который должен вернуть новое количество точек? Или есть другой способ (надеюсь, так, потому что оба вышеописанных способов кажутся не очень удовлетворительными).
Я вижу передаваемый параметр «Контекстный контекст», и я уверен, что вы не знаете, что это экземпляр основной активности, которая уже запущена. просто создайте интерфейс и вызовите его для обновления текстовых просмотров. –
Вы можете попробовать поставить значение в общей привилегии и запросить его при необходимости. Android делает всю грязную работу в фоновом режиме и ее не очень дорого. –
привет друг вы можете использовать кинжал. Вот пример общедоступных методов, и я не делаю его статическим, см. Https://github.com/saveendhiman/SampleApp/blob/master/app/src/main/java/com/sampleapp/utils/AppUtils.java – Saveen