2013-01-05 57 views
4

我试图寻找答案,但找不到我在找什么: 这是我第一次尝试保存数据/使用SharedPreferences,所以我还没有确定我在做什么。 主要观点是,用户在EditText中输入内容后,它会填充ListView。但是我也希望它能够在执行此操作时保存字符串,以便在用户重新输入应用程序时使用LoadPreferences。这不会发生,虽然使用SharedPreferences从ListView保存数据

代码:

public class TaskPage extends SherlockActivity { 

EditText display; 
ListView lv; 
ArrayAdapter<String> adapter; 
Button addButton; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    display = (EditText) findViewById(R.id.editText1); 
    lv = (ListView) findViewById(R.id.listView1); 
    addButton = (Button) findViewById(R.id.button1); 


    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); 
    lv.setAdapter(adapter); 
    LoadPreferences(); 


    addButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      String task = display.getText().toString(); 


       adapter.add(task); 
       adapter.notifyDataSetChanged(); 
       SavePreferences("LISTS", task); 
     } 
    }); 
} 

protected void SavePreferences(String key, String value) { 
    // TODO Auto-generated method stub 
    SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(this); 
    SharedPreferences.Editor editor = data.edit(); 
    editor.putString(key, value); 
    editor.commit(); 


} 

protected void LoadPreferences(){ 
    SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(this); 
    String dataSet = data.getString("LISTS", "None Available"); 

} 

林相当肯定,我做错了什么事,但没有错误。所以当我运行应用程序时,除了没有任何东西被保存(或者它只是不显示在ListView中),所有东西都可以工作。

那么我该如何解决这个问题? 谢谢!

回答

3

更改您LoadPreferences()方法:

protected void LoadPreferences(){ 
    SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(this); 
    String dataSet = data.getString("LISTS", "None Available"); 

    adapter.add(dataSet); 
    adapter.notifyDataSetChanged(); 
} 
在当前的代码

您不添加dataSetArrayAdapter

+0

是啊,我会尝试,但是那里有一个原因,我没有放的ArrayList。我第一次创建一个ArrayList,每当我启动应用程序时,我会得到一个Force Close。但我会再试一次 – user1949400

+0

这工作!谢谢!你能给我一个快速解释为什么我需要一个ArrayList传递给我的ArrayAdapter的LoadPreferences,但我不需要它在我的初始适配器 – user1949400

+0

@ user1949400:看到我的编辑答案,我认为这也将工作 –