1

由于我是 Java 编程新手,因此我需要一些帮助。我坚持这个问题,直到我让它工作才能继续。

我正在尝试从中创建一个包含首选项 int 的字符串。我保存了数据并可以显示 int(只是示例代码):

SharedPreferences prefs=PreferenceManager
        .getDefaultSharedPreferences(this);

    list.setText(prefs.getString("list", "22"));

现在,我有一个 xml 解析器,它可以正确地将 url 作为静态字符串提取:

public static String feedUrl = String.format("http://www.freshpointmarketing.com/iphone/objects/XML/AND.php?ID=%d", 22);

效果很好...

现在我的问题......

我需要让首选项“int”成为字符串中的变量,从而使其不是静态的。

static SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(this);

static int myVariable = prefs.getInt("list1", 22);

public static String feedUrl = String.format("http://www.freshpointmarketing.com/iphone/objects/XML/AND.php?ID=%d", myVariable);

如果我取出所有静态引用,我会得到一个错误:

    private void loadFeed(ParserType type){
    try{
        FeedParser parser = FeedParserFactory.getParser(type);
        long start = System.currentTimeMillis();
        messages = parser.parse();
        long duration = System.currentTimeMillis() - start;
        Log.i("AndroidNews", "Parser duration=" + duration);
        String xml = writeXml();
        Log.i("AndroidNews", xml);
        List<String> titles = new ArrayList<String>(messages.size());
        for (Message msg : messages){
            titles.add(msg.getTitle());
        }
        ArrayAdapter<String> adapter = 
            new ArrayAdapter<String>(this, R.layout.row,titles);
        this.setListAdapter(adapter);
    } catch (Throwable t){
        Log.e("AndroidNews",t.getMessage(),t);
    }
}

谢谢

4

1 回答 1

0

您在这里使用静态是非常不合适的。最好在您的 Activity 生命周期中执行此操作,例如在 onCreate 中。很难看到您发布的代码发生了什么,但请尝试通过应用程序将 url 传递到您实际使用它的地方,并摆脱所有静态。

于 2011-02-21T15:21:53.263 回答