2011-02-11 42 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 2017-03-19 20:58:33

回答

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 2011-02-11 09:43:24

+0

不是prefEditor只是指我刚才定义的实例吗?在这种情况下,没有任何理由认为大写字母应该与我声明的实例不同。也许我错过了一些东西....编辑:我只是注意到两个预处理器调用的情况是不同的。两人都应该是prefEditor。然而,这没有解决。 – Gaege 2011-02-11 09:47:44

3

我想你可能错过了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

SharedPreferences只要将制定出侧的onCreate()方法它有一个上下文:

SharedPreferences settings = getAplicationContext().getSharedPreferences(GAME_PREFERENCES, MODE_PRIVATE);