【问题标题】:Trying to Implement shared preferences with a listview尝试使用列表视图实现共享首选项
【发布时间】:2015-04-10 20:51:54
【问题描述】:

有人可以告诉我我在这里做错了什么吗?我的列表视图出现空指针异常...当我回到列表视图时,我正在尝试使用共享首选项将值保留在列表视图中

抱歉,如果这是一个愚蠢的问题,但在我看来,一切都已初始化,没有任何不应该是空的,所以如果其他人能发现这个问题,那就太好了:{)

    public class MainActivity3 extends MainActivity{

    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.editText5);
    lv = (ListView) findViewById(R.id.listView2);
    addButton = (Button) findViewById(R.id.button21);


    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
        if (display.getText().toString().equals("")) {
        }

        else {
            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");

    adapter.add(dataSet);
    adapter.notifyDataSetChanged();
}

}

抱歉,如果这是一个愚蠢的问题,但在我看来,一切都已初始化,没有任何不应该是空的,所以如果其他人能发现这个问题,那就太好了:{)

     <ListView
    android:layout_width="wrap_content"
    android:layout_height="359dp"
    android:id="@+id/listView2"
    android:layout_alignParentTop="true"
    android:layout_toStartOf="@+id/button21"
    android:layout_alignRight="@+id/editText6"
    android:layout_alignEnd="@+id/editText6" />

【问题讨论】:

  • 发布堆栈跟踪。
  • 你确定在activity_main.xml中有一个id为listView2的listview吗?
  • 一个好的第一步是转到发生 NPE 的行。此行号将显示在您的异常旁边的 logcat 中。 NPE 有很多可能性,知道它发生在哪里将为您指明正确的方向。如果您的代码格式正确,那就太好了...
  • 引起:java.lang.NullPointerException:尝试在 com.example.pp 的空对象引用上调用虚拟方法 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' .application.MainActivity3.onCreate(MainActivity3.java:41)
  • 是的 leiter0499 有一个具有该 ID 的列表视图

标签: android listview sharedpreferences


【解决方案1】:

你能把你的布局代码放在这里吗?因为你的组件名称不太好,所以,也许你可以在另一个布局中调用另一个listView。

当你有 android.R 时,你能尝试删除你的导入行吗?然后,导入正确的。

如果这不起作用,请向上布局代码:)

我正在考虑另一种解决方案。转到 listView 并给它这个 id:

android:id="@android:id/list"

然后,转到 MainActivity 并编写以下内容:

public class YourClass extends ListActivity

所以,要访问 listView,你只需要使用下一个方法:

getListView();

如果您想了解更多,请查看官方文档here

我希望它有效

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    相关资源
    最近更新 更多