所以我有这段代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.favourites);
assert getSupportActionBar() != null;
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
SharedPreferences prefs = getSharedPreferences("myFavs", 0);
Map<String, String> m = (Map<String, String>) prefs.getAll();
List<String> list = new ArrayList<>(m.values());
ListView listView = (ListView) findViewById(R.id.favsList);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,R.layout.listlayout, android.R.id.text1, list );
listView.setAdapter(adapter);
它在logcat中输出此错误:
10-08 08:48:44.114 19390-19390/com.example.me1jmo.insult_generator E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.me1jmo.insult_generator, PID: 19390
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:399)
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:369)
at android.widget.AbsListView.obtainView(AbsListView.java:2346)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1280)
at android.widget.ListView.onMeasure(ListView.java:1188)
at android.view.View.measure(View.java:18788)
...
我已经阅读了有关为什么会发生这种情况的文章,但我无法弄清楚我需要更改哪些代码才能使其正常工作。
答案 0 :(得分:4)
问题即将发生,因为您所指的Textview不在您指定的布局中。
android.R.id.text1
是Android OS类的Textview,内置于操作系统中。
您需要使用
中指定的Textview的IDR.layout.listlayout
更改它,您的错误将得到解决。
答案 1 :(得分:0)
尝试将android.R.id.text1
更改为R.id.text1
。另外,请检查您的listlayout
是否包含ID为text1
的TextView。