我只是尝试通过ACTION_OPEN_DOCUMENT_TREE Intent传递一个额外的值,我无法管理它。我需要显示树对话框,因此用户可以选择一个文件夹,我必须传递一些额外的信息。我已经将这种传递机制与其他意图一起使用,并担心这对特殊意图ACTION_OPEN_DOCUMENT_TREE不起作用?!
我启动intent并传递值simplevalue如下: Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
String sOperations="simplevalue";
intent.putExtra("simplevalue", sOperations);
startActivityForResult(intent, 42);
我尝试接收如下的简单值:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// if (requestCode == REQUEST_QUICKLIST) {
if (resultCode == Activity.RESULT_OK) {
if(requestCode==42){
String simplevalue="";
simplevalue=data.getStringExtra("simplevalue"); // <-- is null
Bundle extras = data.getExtras(); // <- is null
if(extras == null) {
simplevalue= null;
} else {
simplevalue= extras.getString("simplevalue");
}
调试时,simplevalue和bundle extras为null。 如何使用ACTION_OPEN_DOCUMENT_TREE Intent传递一个简单的字符串?
答案 0 :(得分:1)
在另一个课程中,你可以使用
获得simplevalue Intent intent = getIntent();
String simplevalue = intent.getStringExtra("simplevalue");
答案 1 :(得分:1)
我认为传递给startActivityForResult的意图与调用onActivityResult的意图不同。因此,它不包含您指定的值。
我认为我们可以使用中间活动来管理它,该活动接受并存储通过intent传递的值并启动intent
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
在onActivityResult中,您可以将存储的值放在结果意图中,并将其作为中间活动结果提供。
答案 2 :(得分:0)
后期输入,但也许会有用。要绕过意图,并仍然在您的simplevalue
中访问您的onActivityResult
,我建议您在活动中保留一个字典(可能由您自己决定),由请求代码作为键。例如,在:
Map<int, String> map = new HashMap<int, String>();
int nextOpenDocTreeCode = 43800;
在一定范围内(例如43800-43899)循环您的请求代码,在该范围内触发意图并将其放置在地图中:
map.put(nextOpenDocTreeCode++, "type of animal");
nextOpenDocTreeCode = (nextOpenDocTreeCode >= 43900) ? 43800 : nextOpenDocTreeCode;
然后在您的onActivityResult
中进行检索:
simplevalue = map.get(requestCode);