在Android中将变量从父视图传递到子视图



像这样传递变量之间的区别是什么:

Intent intent = new Intent(mCtx, DetailsActivity.class);
intent.putExtra("pId", id);
intent.putExtra("pType", type);
mCtx.startActivity(intent);

并且使用关键字CCD_ 1?

Intent intent = new Intent(MainActivity.this, DetailsActivity.class);
// Now let's Pass data using Bundle
Bundle bundle = new Bundle();
bundle.putString("pId", id);
bundle.putString("pType", type;
intent.putExtras(bundle);
startActivity(intent);

我是安卓开发的新手,我很好奇在进行安卓开发时,哪种方法更好?

意图

public Intent putExtra(String name, String value) { 
if (mExtras == null) { 
mExtras = new Bundle(); 
} 
mExtras.putString(name, value); 
return this; 
}

捆绑

public void putString(String key, String value) { 
unparcel(); 
mMap.put(key, value);
}

putExtras不会将您的捆绑包放入Intent中。相反,它将其复制到当前的intent捆绑包中。

public Intent putExtras(Bundle extras) { 
if (mExtras == null) { 
mExtras = new Bundle(); 
} 
mExtras.putAll(extras); 
return this; 
}

建议使用第一种方法。所有样本都使用第一个putExtra(key,value(方法。

在大多数情况下,你应该知道你要传递给下一个活动的内容,所以putExtra(key,value(是有意义的,因为你知道密钥是什么

我能想到的使用第二种方法的唯一场景是一个临时活动,它从上一个活动接收捆绑包,并需要将所有信息传递给下一个活动。瞬态活动不需要知道传递了什么,只需将接收到的所有内容传递给下一个活动即可。

顺便说一句,如果你创建了自己的Bundle,把键值放进去,然后调用putExtra(Bundle(,临时Bundle会有额外的成本,所以效率较低。

像这样传递变量和使用关键字Bundle有什么区别?

一个直接放入密钥,一个先将它们放入Bundle中。最终结果是一样的。

我是Android开发的新手,我很好奇在进行Android开发时,哪种方法更好或更稳定?

第一个是"更好";或更多";标准";仅仅因为它消除了首先自己创建捆绑包的需要——这是一个多余的步骤。如果您的代码已经有一些逻辑来维护Bundle的数据,并且您希望在Intent中传递这些数据作为键/值对,那么您实际上只需要使用该方法。

相关内容

  • 没有找到相关文章

最新更新