根据 Android 文档 public void startActivityForResult (Intent intent, int requestCode, Bundle options(。
我无法弄清楚如何检索我传递意图的额外捆绑选项。
我想在调用 startActivityForResult 方法时传递一个包含数据的 ArrayList 作为额外的捆绑包选项。
代码示例:
ArrayList<String> list = new ArrayList<>();
list.add("test1");
list.add("test2");
Bundle bundleOptions = new Bundle();
bundleOptions.putStringArrayList("key", list);
startActivityForResult(intent, 10, bundleOptions);
检索数据后:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
Bundle extras = data.getExtras();
捆绑附加包不包含我尝试传递的额外捆绑包。我缺少什么,无法检索传递给该方法的额外捆绑包数据?
我也尝试了intent.putExtra("key", bundleOptions);
,也用intent.putExtra("key", list);
但没有成功,并将该方法称为startActivityForResult(intent, 10);
但再次没有成功。
确定我错过了一些东西,有人知道如何实现这一目标吗?
我确定我错过了一些东西
我怀疑你误解了结果是如何运作的。
假设您有一个HomeActivity
和一个SettingsActivity
。 HomeActivity
使用一些参数启动SettingsActivity
,并想知道一些结果。以下是它的工作原理:
主页活动
这是您打开SettingsActivity
的方式:
public void openSettings() {
Intent i = new Intent(this, SettingsActivity.class);
i.putExtra("myParam", 1);
startActivityForResult(i, 10);
}
这是您在关闭SettingsActivity
时收到的呼叫:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 10) {
if (resultCode == RESULT_OK) {
// Get result from the result intent.
String result = data.getStringExtra("myResult");
// Do something with result...
}
}
}
设置活动
这只是必要的一点。读取输入,生成输出并关闭自身。我希望这足以进行演示。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Retrieve the parameter.
int param = getIntent().getIntExtra("myParam");
// Get a result somewhere.
String resultValue = "RESULT=" + param;
// Build a result intent and post it back.
Intent resultIntent = new Intent();
resultIntent.putExtra("myResult", resultValue);
setResult(RESULT_OK, resultIntent);
finish();
}
请参阅此 http://developer.android.com/training/basics/intents/result.html。
捆绑附加包不包含我尝试传递的额外捆绑包。
正确。
我错过了什么
如果要使用 getExtras()
检索值,请使用putExtras()
或单个putExtra()
方法。
我无法检索我传递给该方法的额外捆绑包数据?
startActivity()
/startActivityForResult()
的第三个参数是将选项传递给Android本身,而不是将数据传递给另一个活动。
我也试过...intent.putExtra("key", list(;但也没有成功
一般来说,这是有效的。例如,此示例应用自 Android 1.0 以来一直有效。启动器活动使用 putExtra()
添加额外的字符串;另一个活动使用 getStringExtra()
来获取值。
如果您在使用 putExtra()
时仍然遇到问题,请发布一个单独的 Stack 溢出问题,您可以在其中提供用于设置和检索额外内容的代码,以及症状的详细说明。