将数据包中的数据传递到库的活动

时间:2017-06-06 11:10:22

标签: android android-intent

我有这个代码,没有捆绑它工作得很好,但当我在意图中添加捆绑包时,在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");}

4 个答案:

答案 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");