我有这个代码,没有捆绑它工作得很好,但当我在意图中添加捆绑包时,在onActivityResult
我没有在数据中找到id_q
,我发现只是所选图片的路径。
Intent intent = new Intent();
Bundle b = new Bundle();
b.putInt("id_q", q.getId());
intent.putExtras(b);
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select File"), SELECT_IMAGE);
这是 onActivityResult :
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
if (requestCode == SELECT_IMAGE)
onSelectFromGalleryResult(data);
并在 onSelectFromGalleryResult (数据)中我有这个:
if (data != null && data.getExtras() != null) {
Bundle b = data.getExtras();
int id_q = b.getInt("id_q");}
答案 0 :(得分:1)
如果你真的想要指定 id_q ,你可以这样做。
步骤1:创建一个全局变量,让我们说 int counter = 0; 和 也是arraylist或列出你为你的id所做的一切。比如说。
ArrayList<Integer> myList;
步骤2:现在,调用你的意图选择里面的图像进行循环
对于E.g
For loop (up to your n number of size)
{
// Now Call your intent here.
}
第3步:在你的OnActivityResult里面 的 onSelectFromGalleryResult(数据); 强>
int id_q = yourArrayList.get(counter);
增加Counter的大小。
计数器++;
现在,你不需要做任何事情,一旦你从Gallery中逐一选择图像,它就会出现在startActivityResult中,你将得到所有的ID,你的计数器也会增加,所以你从arrayList获得了所有新的值从特定的位置。
我希望这会帮助你。
答案 1 :(得分:1)
根据评论,我会建议这样的事情。
public class YourActivity extends Activity {
ArrayList<Question> questionsLeft;
Question currentQ;
/* ... */
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
if (requestCode == SELECT_IMAGE) {
// Do what you have to do with data and currentQ
processNext();
}
}
}
public void processNext() {
if(questionsLeft.isEmpty()) {
return;
}
currentQ = questionsLeft.get(0);
questionsLeft.remove(0);
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select File"), SELECT_IMAGE);
}
}
您还可以为列表中的每个问题设置一个requestCode。您将知道您的请求是&#34; SELECT_IMAGE&#34;如果它在给定范围内而不是单个值。
答案 2 :(得分:0)
在您调用startActivityForResult()的活动中调用活动结果;
在这种情况下,当您使用选择器时,结果意图不必包含与添加的信息相同的信息。
希望这有帮助。
答案 3 :(得分:-1)
试试这个。
这里不需要捆绑包。
Intent intent = new Intent();
intent.putIntExtra("id_q", q.getId());
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select File"), SELECT_IMAGE);
和 onActivityResult
int id_q = data.getIntExtra("id_q");