通过Intent发送数据

时间:2016-02-24 19:30:04

标签: java android android-intent android-activity

有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提前,我感谢任何帮助,建议

3 个答案:

答案 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语句。