我怎么知道Bundle中给出的数据?

时间:2011-06-24 23:28:09

标签: android android-intent bundle

我正在通过Intent / Bundle找出我的方法中的数据。我已经尝试添加断点来检查数据,但我没有看到任何东西。也许是因为它是Parcelable我无法在Eclipse中手动读取它。

例如,onActivityResult(int requestCode, int resultCode, Intent data)Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI)。我如何知道可用的数据?请注意,我不是要求提供哪些数据,但我是如何理解的,以便我可以将相同的想法应用于Android框架中的任何Bundle / Intent?也许这看起来像文档一样简单,但我没有看到完整的数据列表,我在Eclipse中看不到它。所以我迷路了。

4 个答案:

答案 0 :(得分:75)

Bundle.keySet()为您提供捆绑包中所有密钥的列表。也就是说,通常只需要某些键并查询它们,但keySet()用于检查从某处获得的包。

答案 1 :(得分:46)

public static String bundle2string(Bundle bundle) {
    if (bundle == null) {
        return null;
    }
    String string = "Bundle{";
    for (String key : bundle.keySet()) {
        string += " " + key + " => " + bundle.get(key) + ";";
    }
    string += " }Bundle";
    return string;
}

答案 2 :(得分:4)

我得到了alll密钥和捆绑存储的价值......

for (String key : bundle.keySet()) {
    string += " " + key + " => " + bundle.get(key) + ";";
}

输出:

(key)       :(value)    
profile_name:abc

答案 3 :(得分:0)

你从Bundle中获得的唯一东西就是你所提供的东西.Bundles是在活动之间传递信息的方式。如果您负责整个应用程序,则不需要在Bundle中查找对象,您应该抓住它们。想想hashmap键......如果你不知道键,那就不像你可以搜索hashmap了。

要将项目放入Bundle并将其传递给下一个活动,您需要将其作为Extra。请查看here,了解通过活动之间的附加内容和捆绑包传递数据的示例。

复制并粘贴在下面:

来自Activity1

Intent intent = new Intent(this,myActivity2.class);
Bundle bundle = new Bundle();
bundle.putString("myValue", myValue);
intent.putExtras(bundle);
navigation.this.startActivity(intent);

在Activity2中

Bundle bundle = getIntent().getExtras();
act2MyValue= bundle.getString("myValue");