2

我有一個擴展SurfaceView的GamePanel類,所以我不能擴展Activity爲SharedPreferences。如何在不擴展類的情況下使用getSharedPreferences?如何在不擴展Activity的情況下使用getSharedPreferences?

我已經嘗試:

SharedPreferences sp = Activity.getSharedPreferences("MyScore", Context.MODE_PRIVATE); 

不過,我得到它說「不能從靜態上下文中引用的錯誤

+0

創建'GamePanel'對象時傳遞上下文 –

回答

1

您可以初始化你的應用程序類的Sharedpreferences作爲一個靜態變量。然後使用,在每一個非活動類:

public class MyApplication extends Application { 

    private static SharedPreferences sharedPreferences; 

    public static SharedPreferences getSharedPreferences() { 
     return sharedPreferences; 
    } 

    public void setSharedPreferences(SharedPreferences sharedPreferences) { 
     this.sharedPreferences = sharedPreferences; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     setSharedPreferences(MyApplication.this 
      .getSharedPreferences("MyScore",getApplicationContext().MODE_PRIVATE)); 

現在,每當你想訪問一個靜態的背景下sharedprefs,你可以隨時使用它像這樣:

String value = MyApplication.getSharedPreferences().getString("key",""); 
0

嘗試使用這種方式

活動類

package com.test.conf1; 
     import android.support.v7.app.AppCompatActivity; 
     import android.os.Bundle; 
     public class MainActivity extends AppCompatActivity { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      TestClass testPref = new TestClass(this); //creating object and passing context 
      testPref.putStringToSharedPref("MY_APP_PREF","name","your_name"); //put string to shared pref 
    String myName = testPref.getStringFromSharedPref("MY_APP_PREF","name");// get String from sharef pref 
    } 
} 

輔助類共享偏愛

package com.test.conf1; 

import android.content.Context; 
import android.content.SharedPreferences; 

public class TestClass { 
    private Context mContext; 
    public TestClass(Context context){ 
     mContext = context; 
    } 

    public void putStringToSharedPref(String prefName,String key,String value){ 
     SharedPreferences myPref =mContext.getSharedPreferences(prefName,Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor = myPref.edit(); 
     editor.putString(key,value); 
     editor.commit(); 
    } 
    public String getStringFromSharedPref(String prefName,String key){ 
     SharedPreferences myPref = mContext.getSharedPreferences(prefName, Context.MODE_PRIVATE); 
     String value= myPref.getString(key,""); 
     return value; 
    } 
} 

這可以有幫助

相關問題