Tha*_*nos 4 android android-intent android-activity
根据Android文档public void startActivityForResult(Intent intent,int requestCode,Bundle options).
我无法弄清楚如何检索我传递意图的额外包选项.
我想在调用startActivityForResult方法时传递一个带有数据的ArrayList作为额外的bundle选项.
代码示例:
ArrayList<String> list = new ArrayList<>();
list.add("test1");
list.add("test2");
Bundle bundleOptions = new Bundle();
bundleOptions.putStringArrayList("key", list);
startActivityForResult(intent, 10, bundleOptions);
Run Code Online (Sandbox Code Playgroud)
在检索数据时:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
Bundle extras = data.getExtras();
Run Code Online (Sandbox Code Playgroud)
Bundle extras不包含我想要传递的额外包.我缺少什么,我无法检索我传递给方法的额外Bundle数据?
我也试过intent.putExtra("key", bundleOptions);,也有intent.putExtra("key", list);但没有成功,并且调用方法startActivityForResult(intent, 10);但是再次没有成功.
我确信我错过了什么有人知道如何实现这一点?
感谢您的时间和精力.
Eug*_*nec 15
我确信我错过了一些东西
我怀疑你误解了结果是如何起作用的.
我们假设你有一个HomeActivity和一个SettingsActivity.用一些参数HomeActivity启动a SettingsActivity并想知道一些结果.以下是它的工作原理:
这是你如何打开SettingsActivity:
public void openSettings() {
Intent i = new Intent(this, SettingsActivity.class);
i.putExtra("myParam", 1);
startActivityForResult(i, 10);
}
Run Code Online (Sandbox Code Playgroud)
这是您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...
}
}
}
Run Code Online (Sandbox Code Playgroud)
这只是必要的一点.读取输入,构建输出并自行关闭.我希望它足以进行演示.
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();
}
Run Code Online (Sandbox Code Playgroud)
请参阅http://developer.android.com/training/basics/intents/result.html.
Bundle extras不包含我想要传递的额外包.
正确.
我错过了什么
如果您希望使用getExtras(),使用putExtras()或单个putExtra()方法检索值.
我无法检索我传递给方法的额外Bundle数据?
第三个参数是startActivity()/ startActivityForResult()将选项传递给Android本身,而不是将数据传递给另一个活动.
我也尝试过... intent.putExtra("key",list); 但也没有成功
一般来说,这是有效的.例如,此示例应用程序自Android 1.0以来一直有效.启动器活动用于putExtra()添加额外的字符串; 其他活动用于getStringExtra()获取价值.
如果您继续使用问题putExtra(),请发布单独的Stack Overflow问题,您可以在其中提供设置和检索额外信息的代码,以及症状的详细说明.
| 归档时间: |
|
| 查看次数: |
16930 次 |
| 最近记录: |