2013-03-03 9 views
8

पर SharedPreferences भूल मैं क्या किसी भी अधिकएप्लिकेशन को पुनः प्रारंभ

एंड्रॉयड 3.0 और उच्चतर के साथ ठीक काम कर रहा है, लेकिन एंड्रॉयड 2.3.3 पर हर बार जब मैं आवेदन यह है लांच इसके साथ क्या करने के लिए पता नहीं है रहता है उपयोगकर्ता नाम/पासवर्ड फिर से पूछना।

मैं साझा प्राथमिकताओं का उपयोग कर रहा हूं।

यहाँ कैसे मैं प्राथमिकताओं को सहेजने है:

 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(MyApplication.getAppContext()); 
     SharedPreferences.Editor editor = preferences.edit(); 
     editor.putString("username", username).commit(); 
     editor.putString("password", password).commit(); 

:

SharedPreferences preferences = MyApplication.getAppContext().getSharedPreferences("athopbalance", Context.MODE_PRIVATE); 
    String username = preferences.getString("username", ""); 
    String password = preferences.getString("password", ""); 

मैं भी इस कोड का उपयोग प्राथमिकताओं को सहेजने की कोशिश की:

 SharedPreferences preferences = MyApplication.getAppContext().getSharedPreferences("athopbalance", MODE_PRIVATE); 
     SharedPreferences.Editor editor = preferences.edit(); 
     editor.putString("username", username).commit(); 
     editor.putString("password", password).commit(); 

और यहाँ कैसे मैं उन्हें पढ़ने है और उन्हें इस कोड के साथ पढ़ें:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(MyApplication.getAppContext()); 
    String username = preferences.getString("username", ""); 
    String password = preferences.getString("password", ""); 

लेकिन यह या तो काम नहीं करता है।

समस्या को पुनरारंभ करने से पहले समस्या यह है कि मैं देख सकता हूं कि वे अभी भी वहां हैं। हालांकि जैसे ही मैं पुनरारंभ करता हूं - मैं उपयोगकर्ता नाम के लिए और "" पासवर्ड के लिए "खाली स्ट्रिंग) प्राप्त करता हूं।

कोई भी विचार बहुत सराहना की जाएगी

उत्तर

0

मुझे नहीं पता कि वास्तव में क्या हुआ, लेकिन जब मैंने एमुलेटर समस्या को पुनरारंभ किया है तो चला गया है।

क्षमा करें अपना समय

+0

यहां एक ही समस्या है और यह आपके जैसे ही पुनरारंभ करने के बाद चला गया। बहुत अजीब… – Victor

1

आज़माएं:

SharedPreferences preferences = context.getSharedPreferences("YOUR_TAG", 0); 
String username = preferences.getString("username", ""); 
String password = preferences.getString("password", ""); 


    SharedPreferences.Editor editor = preferences.edit(); 
    editor.putString("username", username).commit(); 
    editor.putString("password", password).commit(); 

जहां संदर्भ अपने अनुप्रयोग के संदर्भ है:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


     context = this; 
+0

हाय, आप अपनी टिप्पणी के लिए बहुत बहुत धन्यवाद। मैं अपने पहले उदाहरण में काफी कुछ कर रहा हूं, लेकिन मुझे डर है कि यह –

+0

काम नहीं करता है MyAplication के बजाय आपकी गतिविधि के साथ प्रयास करें। – Gyonder

+0

मैं गतिविधि से संदर्भ पारित करने के बजाय getAplicationContext() को कॉल कर रहा था। –

2
public class MyApplication extends Application { 
    private static MyApplication instance; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Log.d(TAG, "onCreate() called"); 
    } 

    public MyApplication() { 
     super(); 
     Log.d(TAG, "Constructor called"); 
     instance = this; 
    } 


    public static MyApplication getApplication() { 
     if (instance == null) { 
      instance = new MyApplication(); 
     } 
     return instance; 
    } 
} 

और उपयोग:

MyApplication.getApplication().getSharedPreferences(MY_PREFERENCES, Context.MODE_PRIVATE) 
+0

आपका उदाहरण लौटने से पहले 'नया MyAplication' को सहेजने से पहले सहेजता नहीं है ताकि कैशिंग कभी न हो। – mikebabcock

+0

धन्यवाद, मैं इसे –

+0

पर जाने के लिए माइकबैबॉक द्वारा निर्धारित समस्या को ठीक कर दूंगा। धन्यवाद! – agamov

संबंधित मुद्दे