我正在尝试将捆绑从一个活动发送到另一个活动。当我在接收活动中加载包时,所有信息似乎都为空。这是一些代码:
活动A(发送包):
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
Intent intent = new Intent(HotelsActivity.this, EditHotelActivity.class);
Bundle b = new Bundle();
b = toBundle(app.getHotelList().get(position));
intent.putExtra("Hotel Bundle", b);
startActivity(intent);
}
});
toBundle方法只是将对象中的字符串添加到bundle中。我已将日志语句放在此方法中,并且该bundle肯定不是null。
活动B(加载捆绑包):
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView (R.layout.edit_hotel);
setTitleFromActivityLabel (R.id.title_text);
// Retrieve sent bundle
Bundle b = this.getIntent().getExtras();
String hotelName = b.getString("hotelname");
if (hotelName == null)
MyLog.i(TAG, "IT IS NULL");
}
然后,loggin语句打印“IT IS NULL”,因为某些原因,hotelName为null,但肯定是正确的密钥。
任何人都可以帮忙吗?
toBundle方法:
public Bundle toBundle(HotelItem hotel) {
Bundle b = new Bundle();
b.putString("hotelname",hotel.getHotelName());
b.putString("hotel address", hotel.getHotelAddress());
b.putString("hotel telephone", hotel.getHotelTelephone());
b.putString("hotel website", hotel.getHotelWebsite());
return b;
}
答案 0 :(得分:4)
Bundle b = new Bundle();
b = toBundle(app.getHotelList().get(position));
intent.putExtras(b);
startActivity(intent);
//In your next activity
//Create another Bundle object and get the string by name
Bundle bundle = getIntent().getExtras();
if(bundle!=null){
String hotelName = bundle.getString("hotelname");
}
答案 1 :(得分:1)
您必须使用已发送的确切密钥:
String hotelName = b.getString("hotelname");
已更新!
答案 2 :(得分:1)
活动A(发送包):
intent.putExtra("Hotel Bundle", b);
活动B(加载包):
getintent().getExtra("Hotel Bundle");
不是getintent().getExtra*s*
答案 3 :(得分:0)
使用Intent.putExtra(Bundle)
方法。
intent.putExtra(b);
答案 4 :(得分:0)
您应该implement
Parcelable,而不是使用 toBundle 方法,并将您的对象写入Intent
。
答案 5 :(得分:0)
我不知道是否还有人需要这个,但在intent.putExtra("Hotel Bundle", b);
您只发送intent.putExtra(b);
,以便通过
Bundle b = this.getIntent().getExtras();
String hotelName = b.getString("hotelname");
或者如果您想保留Hotel Bundle
密钥
Bundle b = this.getIntent().getBundleExtra("Hotel Bundle");
String hotelName = b.getString("hotelname");
对不起,我在这里需要答案,所以不妨帮助那些遇到此问题的人。欢呼声。
答案 6 :(得分:0)
您可以在第一个活动中使用它:
Intent i = new Intent(Context, your second.class);
i.putExtra("key_value", "your object");
startActivity(i);
并在第二个活动中获取对象:
Intent in = getIntent();
Bundle content = in.getExtras();
// check null
if (content != null) {
String content = content_search.getString("key_value");
}