有ListView,它必须在项目点击后将数据发送到另一个Activity
这是发送数据:
listFavorites.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> listView, View v, int position, long id) {
Intent intent = new Intent(ListWords.this, MainActivity.class);
intent.putExtra(MainActivity.EXTRA_MESSAGE, Long.toString(id));
startActivity(intent);
}
这是获取数据:
public Fragment getItem(int id) {
if(id>=0&&getIntent().getExtras().get(EXTRA_MESSAGE)==null) {
return PageFragment.newInstance(id);
}else if(id==0&&getIntent().getExtras().get(EXTRA_MESSAGE)!=null){
int drinkID = (Integer) getIntent().getExtras().get(EXTRA_MESSAGE);
return PageFragment.newInstance(drinkID);}
else{
return PageFragment.newInstance(id);
}
这部分工作正常:if(id == 0&amp;&amp; getIntent()。getExtras()。get(EXTRA_MESSAGE)!= null)
但是这里不会检查null: getIntent()。getExtras()。得到(EXTRA_MESSAGE)== NULL
它出现错误 尝试在空对象引用上调用虚方法'java.lang.Object android.os.Bundle.get(java.lang.String)'
Thanx提前,我感谢任何帮助,建议
答案 0 :(得分:0)
由于您将long值转换为String,因此它不能为null,因为long的值是预定义的,并显示项目列表。
答案 1 :(得分:0)
Intent intent=getIntent();
if(intent.getExtras()!=null)
{
if(id>=0&&intent.getExtras().get(EXTRA_MESSAGE)==null) {
return PageFragment.newInstance(id);
}else if(id==0&&intent.getExtras().get(EXTRA_MESSAGE)!=null){
int drinkID = (Integer) intent.getExtras().get(EXTRA_MESSAGE);
return PageFragment.newInstance(drinkID);}
else{
return PageFragment.newInstance(id);
}
}
答案 2 :(得分:0)
好吧,我的第一次尝试是重构if if block,这样可以提高效率:
fdlibm.h
为什么,你可能会问?因为如果我们检查第一个和第三个if语句的结果,你返回完全相同的东西,所以第一个if-block是无用的。现在,通过这种方式,它更有效率,并且您正在删除技术上从未评估过的if语句。