2011-02-11 17 views
19

मैं धीरे धीरे एक Android सीखने पुस्तक के माध्यम से काम कर रहा हूँ और उपयोगकर्ता डेटा आवंटित करने के लिए निम्न कोड दिया गया था:साझा वरीयताओं का उपयोग करते हुए संपादक

package com.androidbook.triviaquiz; 

import android.app.Activity; 
import android.content.SharedPreferences; 

public class QuizActivity extends Activity { 
    public static final String GAME_PREFERENCES = "GamePrefs"; 
    SharedPreferences settings = getSharedPreferences(GAME_PREFERENCES, MODE_PRIVATE); 
    SharedPreferences.Editor prefEditor = settings.edit(); 
    prefeditor.putString("UserName", "John Doe"); //**syntax error on tokens** 
    prefEditor.putInt("UserAge", 22); //**syntax error on tokens** 
    prefEditor.commit(); 
} 

हालांकि, मैं एक त्रुटि (टिप्पणी के साथ संकेत दिया लाइनों) मिलता है कि रेखांकित करता है अवधि और "गलत स्थान" का निर्माण करता है और यह भी कहता है कि "इन टोकन को हटाएं" कह रहे तर्कों को रेखांकित करता है। मैंने इसे अन्य प्रारूपों में एक ही प्रारूप में देखा है, मुझे समझ में नहीं आता कि क्या गलत है।

+0

इस ब्लॉग को देखें http://www.gadgetsaint.com/go/xb023 – ASP

उत्तर

31

संपादित करें: बेशक! उन बयानों उस स्तर पर कक्षा में सीधे नहीं रखा जा सकता है और एक विधि के अंदर होना चाहिए, कुछ इस तरह:

public class QuizActivity extends Activity { 
    public static final String GAME_PREFERENCES = "GamePrefs"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     SharedPreferences settings = getSharedPreferences(GAME_PREFERENCES, MODE_PRIVATE); 
     SharedPreferences.Editor prefEditor = settings.edit(); 
     prefEditor.putString("UserName", "John Doe"); 
     prefEditor.putInt("UserAge", 22); 
     prefEditor.putString("Gender", "Male"); 
     prefEditor.commit(); 
    } 
} 
+0

सभी होना चाहिए, लेकिन मैं त्रुटियों के प्रकार के बारे में सोच रहा हूं। – mad

+0

prefEditor सिर्फ उस उदाहरण का जिक्र नहीं कर रहा है जिसे मैं तुरंत पहले परिभाषित करता हूं? उस स्थिति में कोई कारण नहीं है कि पूंजीकरण को मैंने जो उदाहरण घोषित किया उससे अलग होना चाहिए। शायद मुझे कुछ याद आ रहा है .... संपादित करें: मैंने अभी देखा है कि मामला दो प्रीफेडिटर कॉलों में अलग था। दोनों prefEditor होने के लिए माना जाता था। हालांकि यह कुछ भी हल नहीं करता है। – Gaege

+0

अजीब; मुझे आपके कोड के साथ कुछ और गलत नहीं दिख रहा है। आप किस आईडीई का उपयोग कर रहे हैं? जैसा कि मार्कस ड्रॉसर ने बताया, ये अजीब त्रुटि संदेश हैं। – trojanfoe

3

मैं तुम्हें OnCreate अप याद कर सकते हैं लगता है() विधि, सुनिश्चित करें कि आप साझा वरीयता देना चाहिए रहने दो अपने OnCreate() विधि में ... मैं सिर्फ अपने कोड संपादित यह माध्यम से जाने

बाहर की ओर एक OnCreate() विधि के रूप में लंबे समय के रूप में काम करेंगे कोड के माध्यम से जाना कृपया ...

public class A extends Activity { 
static SharedPreferences settings; 
public static final String PREFS_NAME = "YourPrefName"; 

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     settings = getSharedPreferences(PREFS_NAME, 0); 
Log.v("UserName"," - "+settings.getString("username","android")); 
SharedPreferences.Editor editor = settings.edit();   
      editor.putString("username","Change Android");   
      editor.commit(); 

Log.v("UserName after changed editing preference key value"," - "+settings.getString("username","android")); 


} 

} 
+0

पुस्तक ने वास्तव में इस कोड को रखा जाना चाहिए, जहां पदानुक्रम के भीतर नियुक्ति का उल्लेख नहीं किया था। मैंने आखिरी वस्तु को माना जिस पुस्तक ने संदर्भित किया था, लेकिन शायद मुझे गलती हुई थी। – Gaege

0

SharedPreferences नीचे इसमें एक संदर्भ है:

SharedPreferences settings = getAplicationContext().getSharedPreferences(GAME_PREFERENCES, MODE_PRIVATE); 
संबंधित मुद्दे