Bundle.toString()在onActivityResult()中不起作用



我有两个活动,一个是MainActivity,另一个是SecondActivity

我像这个一样启动了SecondActivity

Intent intent = new Intent(MainActivity.this, SecondActivity.class);
Bundle bundle = new Bundle();   
bundle.putString("username","User");
bundle.putString("password", "pwd");
intent.putExtras(bundle);
startActivityForResult(intent, REQUEST_CODE);

然后在SecondActivity中,我正在打印Bundle字符串表示

Intent intent = getIntent();
Bundle bundle = intent.getExtras();
setResult(RESULT_OK, intent);
Log.i("MyTag2",bundle.toString()); // output is Bundle[{username=User, password=pwd}]

它工作正常,但当我在onActivityResult((内的MainActivity中记录Bundle.toString()时,它将打印Bundle[mParcelledData.dataSize=80]这是onActivityResult((中的代码

Log.i("TAG",data.getExtras().toString()); // but here output is Bundle[mParcelledData.dataSize=80] why ?
// data is Intent object received 

编辑:Bundle.toString()工作正常意味着它给了我Bundle[{username=User, password=pwd}],但只在SecondActivity

Bundle不是一个可以简单地toString()并查看内容的东西。捆绑包可以包含任何数据。想一想——你能简单地toString()一个完整的数组并将内容视为String吗?不需要,您首先需要从数组中提取元素,只有如果它们能够以String格式表示并具有关联的toString()方法,您才能调用该方法并使其正常工作。

从本质上讲,从Bundle中提取内容,并分别对其进行toString()

即使你可以在Bundle上这样做,我仍然建议你不要这样做,因为如果你在应用程序的未来迭代中在Bundle中添加了不同类型的数据,如果数据格式没有以某种方式得到正确支持,它可能会导致程序崩溃或出现意外行为。

最新更新