Я пытаюсь изменить переменную (счастье) из моего MainActivity.class SharedPrefs всякий раз, когда запущена служба. Я не могу понять, как это сделать. Ниже приведен мой код. Мой результат заканчивается счастьем = -1, который из-за prefEditor.putInt Я понимаю, но не знаю, как продолжить модификацию и возврат значения.Измените переменную из MainActivity в моем классе Service, затем обновите TextView с помощью переменной
public class MainActivity extends Activity {
int Health = 100;
private static final int Happiness = 100;
int Hunger = 0;
int Level = 1;
EditText happiness_display,
health_display,
hunger_display,
level_display;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences settings = getSharedPreferences("APP_PREFS",
MODE_PRIVATE);
SharedPreferences.Editor prefEditor = settings.edit();
prefEditor.putInt("HAPPINESS", Happiness);
prefEditor.commit();
WebView myWebView = (WebView) findViewById(R.id.pet_display);
myWebView.loadUrl("file:///android_asset/renamon.gif");
myWebView.setInitialScale(10000);
ShowToast();
TextView happiness = (TextView) findViewById(R.id.happiness_display);
happiness.setText(Integer.toString(Happiness));
Calendar cal = Calendar.getInstance();
Intent intent = new Intent(this, chronos.class);
PendingIntent pintent = PendingIntent.getService(this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
// Start every 30 seconds
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 30*1000, pintent);
}
private void ShowToast() {
Toast.makeText(getApplicationContext(), "Toast method invoked from on create " + Happiness, Toast.LENGTH_LONG).show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
public class chronos extends Service {
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
SharedPreferences settings = getSharedPreferences("APP_PREFS",
MODE_PRIVATE);
SharedPreferences.Editor prefEditor = settings.edit();
prefEditor.putInt("HAPPINESS", - 1);
prefEditor.commit();
Toast.makeText(getBaseContext(), "Chronos running" + settings.getInt("HAPPINESS", 0), Toast.LENGTH_LONG).show();
return super.onStartCommand(intent, flags, startId);
}
}
Любая оцененная помощь или точку в правильном направлении, если моя методология неправильно (вероятно, является: P)
Это, вероятно, моя непоследовательность, но я в основном хотят, чтобы изменить значение Счастья, Здоровье и т. Д. Каждый раз, когда служба запускается, Как игровой цикл, но для виртуальных домашних животных.
Пример код в моем IntentService
happiness = happiness - 1;
SharedPreferences.Editor prefEditor = settings.edit();
prefEditor.putInt("HAPPINESS", happiness);
prefEditor.commit();
Я просто хочу каждый сервис работает для того, чтобы вычесть определенную сумму от некоторых переменных.
проверить мой ответ – moDev