2011-08-05 44 views
0

我已經在我的應用程序中使用了SharedPreferences方法來輕鬆傳遞首選項和其他數據。現在我'm試圖與AChartEngine接口,我得到這個語法錯誤:「方法SharedPreferences(字符串,int)未定義類型AverageHoleScoreToPar」。這是代碼:SharedPreferences方法對於AChartEngine意圖是未定義的

... 
import android.content.SharedPreferences; 
import android.graphics.Color; 
import android.graphics.Paint.Align; 

public class AverageHoleScoreToPar extends AbstractDemoChart { 
public String getName() { 
    return "getName"; 
} 
public String getDesc() { 
    return "The average temperature in 4 Greek islands (line chart)"; 
} 
public Intent execute(Context context) { 
    String PREFS_NAME = "PersistentData";  
    SharedPreferences prefs = SharedPreferences(PREFS_NAME, 0); 
    SharedPreferences.Editor editor = prefs.edit(); 
    int p1R_id = prefs.getInt("prefPrefp1R_id", 0); 
    String p1R_name = prefs.getString("prefPrefp1R_name", ""); 
... 

每當我解決Android或Java的有據可查的錯綜複雜之一,我碰到另一個。但很有趣(大部分時間)尋找答案。

回答

0

試試這個代碼:

SharedPreferences prefs = getSharedPreferences(PREFS_NAME, MODE_PRIVATE); 

,而不是SharedPreferences(PREFS_NAME, MODE_PRIVATE);

如果仍然沒有爲AverageHoleScoreToPar工作,儘量延長一個Application類和存儲您SharedPreferences無論是在public static SharedPreferences變量或只是一個public變量,你稍後得到通過getApplicationContext();

這是static的一個例子:

TestApplication.java:

public class TestApplication extends Application 
{ 
    public static SharedPreferences mPrefs; 

    @Override 
    public void onCreate() 
    { 
     super.onCreate(); 
     String PREFS_NAME = "PersistentData";  
     SharedPreferences mPrefs = getSharedPreferences(PREFS_NAME, MODE_PRIVATE); 
    } 
} 

,並在您AverageHoleScoreToPar.java,使用此:

public Intent execute(Context context) { 
    SharedPreferences prefs = TestApplication.mPrefs; 
    SharedPreferences.Editor editor = prefs.edit(); 
... 
} 

不要忘記在您AndroidManifest.xml文件Application類。

+0

感謝您的反饋Mircea。我相信第一個建議解決了語法錯誤,但給我留下了某種類型的運行錯誤,無論我嘗試了多少變體(基於其他Web Q&A的「試用」),我仍留有「prefs」爲空在「SharedPreferences prefs = TestApplication.mPrefs;」之後被執行。今天我嘗試從AverageHoleScoreToPar中訪問sql,並沒有去那裏。我剛完成設置,將所有想要控制的數組和變量作爲參數傳遞。首先我應該走這條路。乾杯,湯姆 –

+0

您是否在'TestApplication.onCreate'中的'getSharedPreferences'調用後檢查'mPrefs'是否爲'null'? –

相關問題