Ich bin diesem Link gefolgt und habe erfolgreich Singleton-Klasse in Android gemacht. http://www.devahead.com/blog/2011/06/extending-the-android-application-class-and-dealing-with-singleton/
Problem ist, dass ich ein einzelnes Objekt möchte. wie ich habe Aktivität A und Aktivität B. In Aktivität AI Zugriff auf das Objekt von Singleton class
. Ich benutze das Objekt und habe einige Änderungen daran vorgenommen.
Wenn ich zu Aktivität B wechsle und von der Singleton-Klasse aus auf das Objekt zugreife, habe ich das initialisierte Objekt erhalten und die in Aktivität A vorgenommenen Änderungen nicht beibehalten. Gibt es eine andere Möglichkeit, die Änderung zu speichern? Bitte helfen Sie mir Experten. Das istMainActivity
public class MainActivity extends Activity {
protected MyApplication app;
private OnClickListener btn2=new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent=new Intent(MainActivity.this,NextActivity.class);
startActivity(intent);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Get the application instance
app = (MyApplication)getApplication();
// Call a custom application method
app.customAppMethod();
// Call a custom method in MySingleton
Singleton.getInstance().customSingletonMethod();
Singleton.getInstance();
// Read the value of a variable in MySingleton
String singletonVar = Singleton.customVar;
Log.d("Test",singletonVar);
singletonVar="World";
Log.d("Test",singletonVar);
Button btn=(Button)findViewById(R.id.button1);
btn.setOnClickListener(btn2);
}
}
Das ist NextActivity
public class NextActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_next);
String singletonVar = Singleton.customVar;
Log.d("Test",singletonVar);
}
}
Singleton
Klasse
public class Singleton
{
private static Singleton instance;
public static String customVar="Hello";
public static void initInstance()
{
if (instance == null)
{
// Create the instance
instance = new Singleton();
}
}
public static Singleton getInstance()
{
// Return the instance
return instance;
}
private Singleton()
{
// Constructor hidden because this is a singleton
}
public void customSingletonMethod()
{
// Custom method
}
}
und MyApplication
public class MyApplication extends Application
{
@Override
public void onCreate()
{
super.onCreate();
// Initialize the singletons so their instances
// are bound to the application process.
initSingletons();
}
protected void initSingletons()
{
// Initialize the instance of MySingleton
Singleton.initInstance();
}
public void customAppMethod()
{
// Custom application method
}
}
Wenn ich diesen Code ausführe, erhalte ich Hello, das ich in der Singleton
Welt initialisiert habe, in der ich es gegeben habe, MainActivity
und zeigt Hello NextActivity
in logcat erneut an. Ich möchte, dass es die Welt wieder zeigt NextActivity
. Bitte helfen Sie mir, dies zu korrigieren.