在我的MainActivity中,我有一个ListView和一个OnClickListenter。通过Button,可以更改为另一个站点(addRecord.xml),这是在数据库(和ListView)中添加新记录。
单击(并按住)某个项目时,您将进入与添加新记录时相同的站点。 (往上看)。 直到这里的一切都很好。 现在我尝试添加一个新的Intent,因为(addRecord.xml)中的EditTexts应该被单击的ListView的Item数据填充(longclick)。
Intent i = new Intent(getApplicationContext(),ActivityAddRecord.class);
i.putExtra("Name", arrayList.get(position).getName());
i.putExtra("update", true);
startActivity(i);
我在ActivityAddRecord课程中添加了:
Intent i = getIntent();
final boolean update = i.getExtras().getBoolean("update");
if(update==true)
{
editText1.setText(getIntent().getExtras().getString("Name"));
}
现在,当单击并按住ListView项时,您将进入addrecord.xml站点,EditText将填充Name。它工作正常。
但是当我想添加一个新的记录(通过按钮点击)时,应用程序崩溃了。如果没有这6行代码,它就不会崩溃。
在LogCat中,它在第52行显示NullPointerException,它是
final boolean update = i.getExtras().getBoolean("update");
我已经阅读了很多有关此类错误的主题,但这些消息并没有帮助我
任何想法?
答案 0 :(得分:3)
替换final boolean update = i.getExtras().getBoolean("update");
通过
final boolean update = i.getBooleanExtra("update");
另外editText1.setText(getIntent().getExtras().getString("Name"));
通过
editText1.setText(i.getStringExtra("Name"));
答案 1 :(得分:2)
您应该使用i.getBooleanExtra
和i.getStringExtra
,因为您没有提供套装(您没有拨打i.setExtras(Bundle)
)
答案 2 :(得分:1)
Intent i = getIntent();
final boolean update =i.getBooleanExtra("update",false);
if(update==true)
{
editText1.setText(getIntent().getExtras().getString("Name"));
}
请根据您的要求使用此功能。它将正常工作。