0

我在整个应用程序中都使用了 SharedPreferences 方法来轻松传递首选项和其他数据。现在,我尝试与 AChartEngine 交互,但出现此语法错误:“对于 AverageHoleScoreToPar 类型,方法 SharedPreferences(String, int) 未定义”。这是代码:

...
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 有据可查的复杂问题时,我都会遇到另一个问题。但寻找答案很有趣(大部分时间)。

4

1 回答 1

0

试试这个代码:

SharedPreferences prefs = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);

代替SharedPreferences(PREFS_NAME, MODE_PRIVATE);

如果这仍然不起作用AverageHoleScoreToPar,请尝试扩展一个Application类并将您的SharedPreferences或者存储在一个public static SharedPreferences变量中,或者只是一个public稍后通过的变量getApplicationContext();

这是一个例子static

测试应用程序.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();
...
}

不要忘记Application在文件中包含该类AndroidManifest.xml

于 2011-08-05T18:32:23.307 回答