我有两个活动,一个是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中添加了不同类型的数据,如果数据格式没有以某种方式得到正确支持,它可能会导致程序崩溃或出现意外行为。