संपादित करें कृपया Observer Observables implementing issue देखें - ऐसा लगता है कि मैं उन तरीकों को ओवरराइड कर रहा था जिन्हें सेट करने और सेट करने की आवश्यकता नहीं थी; सूचित करने से पहले();अवलोकन/पर्यवेक्षक एंड्रॉइड
मैं अपने यूआई को अद्यतित रखने के लिए ऑब्जर्वर पैटर्न पर पढ़ रहा हूं लेकिन मैं अभी भी इसका उपयोग नहीं देख सकता .. यहां तक कि अगर मेरी विशेष वस्तु में मेरी मुख्य गतिविधि को सूचित किया जाता है तो अद्यतन(); विधि मैं अभी भी अद्यतन ऑब्जेक्ट को खींचने के लिए पालतू ऑब्जेक्ट का उपयोग करने में सक्षम नहीं होगा क्योंकि वस्तु ऑनक्रेट में बनाई गई है ... और मैं बस एक नई वस्तु नहीं बना सकता क्योंकि तब चर अलग होंगे .. यह मेरा है कार्यान्वयन और यह काम नहीं लग रहा है। क्योंकि वैश्विक स्तर पर इसकी परिभाषित नहीं
पर्यवेक्षक/MainActivity
package com.grim.droidchi;
import java.util.Observable;
import java.util.Observer;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebSettings.LayoutAlgorithm;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements Observer, OnClickListener {
private static final String TAG = "VPET";
private static final String APP_PREFS = "VPET";
private static final int REQUEST_CODE = 1;
Boolean isAlive = false;
TextView happiness_display, health_display, hunger_display, level_display;
Button PunchPet, UpdateHunger;
public static Pet pet = new Renamon();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences settings = getSharedPreferences("APP_PREFS",
MODE_PRIVATE);
WebView myWebView = (WebView) findViewById(R.id.pet_display);
myWebView.loadUrl("file:///android_asset/renamon.gif");
myWebView.setInitialScale(10000);
myWebView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
PunchPet = (Button) findViewById(R.id.PunchPet);
UpdateHunger = (Button) findViewById(R.id.UpdateHunger);
final TextView hunger_display = (TextView) findViewById(R.id.hunger_display);
TextView happiness_display = (TextView) findViewById(R.id.happiness_display);
TextView level_display = (TextView) findViewById(R.id.level_display);
TextView health_display = (TextView) findViewById(R.id.health_display);
hunger_display.setText(Integer.toString(pet.getHunger()));
health_display.setText(Integer.toString(pet.getHP()));
level_display.setText(Integer.toString(pet.getLVL()));
happiness_display.setText(Integer.toString(pet.getHappy()));
Intent intent = new Intent(this, Gameloop.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
getBaseContext(), REQUEST_CODE, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis() + (5 * 1000), 1800000, pendingIntent);
// 1800000 ms = 30 mins
pet.feed();
pet.addObserver(this);
}
@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;
}
@Override
protected void onPause() {
super.onPause();
}
@Override
public void update(Observable o, Object data) {
hunger_display.setText(Integer.toString(pet.getHunger()));
health_display.setText(Integer.toString(pet.getHP()));
level_display.setText(Integer.toString(pet.getLVL()));
happiness_display.setText(Integer.toString(pet.getHappy()));
Log.d(TAG, "UPDATED FROM OBSERVER");
}
@Override
public void onClick(View v) {
if (v == PunchPet) {
pet.setHP(500);
Toast.makeText(getApplicationContext(), "PUNCHPET", Toast.LENGTH_SHORT).show();
health_display.setText(Integer.toString(pet.getHP()));
}else {
}
}
}
प्रत्यक्ष/पालतू पशु
package com.grim.droidchi;
import java.util.Observable;
import java.util.Observer;
import java.util.Set;
import android.util.Log;
public class Pet extends Observable implements PetInterface {
protected Set<Observer> observers;
private static final String TAG = "VPET";
private int Health = 100;
@Override
public void addObserver(Observer o) {
observers.add(o);
super.addObserver(o);
}
@Override
public void notifyObservers() {
observers.notify();
super.notifyObservers();
}
@Override
public synchronized void deleteObserver(Observer o) {
observers.remove(o);
super.deleteObserver(o);
}
private int Happiness = 10;
private int Level = 1;
private int Hunger = 0;
private int Exp = 0;
private String Name;
private Boolean isAlive = true;
private Boolean isSick = false;
public void setHP(int hp) {
this.Health = hp;
notifyObservers(hp);
}
public void setLVL(int lvl) {
this.Level = lvl;
notifyObservers(lvl);
}
public void setXP(int xp) {
this.Exp = xp;
notifyObservers(xp);
}
public void setHunger(int hunger) {
this.Hunger = hunger;
notifyObservers(hunger);
}
public void setHappy(int happy) {
this.Happiness = happy;
notifyObservers(happy);
}
public int getHP() {
return Health;
}
public int getLVL() {
return Level;
}
public int getXP() {
return Exp;
}
public int getHunger() {
return Hunger;
}
public int getHappy() {
return Happiness;
}
public boolean isAlive() {
return isAlive;
}
public boolean isSick() {
return isSick;
}
@Override
public void sleep() {
// TODO Auto-generated method stub
}
@Override
public void clean() {
// TODO Auto-generated method stub
}
@Override
public void feed() {
Log.d(TAG, "FEEDING FROM INTERFACE THING");
}
@Override
public void passtime() {
}
}
मुझे लगता है कि आप पर एक नज़र रखना चाहिए की
update
विधि कहा जाता है कि के लिए एक संदर्भ होना चाहिए? v = wiQdrH2YpT4 –