未调用的片段中的onActivityResult

时间:2014-08-29 15:57:22

标签: java android android-fragments whatsapp

我正试图通过我的应用程序在whatsapp上附加图像。我的应用包含两项活动 答:它包含许多片段 B:只是一项活动

当我在我的Mainactivity上放置了一个intent过滤器,其中包含用于拾取图像的片段。所以这是发生的事情:

尝试将图片附加到whatsapp - >打开Mainactivity(Fragment1)点击Gridview项目 - >转到活动B

当我点击B中的按钮将数据发送回Whatsapp时,它又回到Mainactivity,它甚至没有调用Fragment的OnActivityResult方法。我必须将数据发送回whatsapp。 我已经研究了与这个问题相关的每个问题。但没有任何作用! :/

我正在使用的代码:

Mainactivity.java(包含片段)

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

}

Fragment1.java

    mGrid.setOnItemClickListener(

              new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
            // TODO Auto-generated method stub



                Intent i = new Intent(getActivity(), FullImageActivity.class);
                // passing array index
                i.putExtra("im",fileList);
                i.putExtra("pos", position);
                i.putExtra("folder", folder);
                i.putExtra("req", isinint);
                startActivityForResult(i, Activity.RESULT_OK);


        }

    }); 

Fragment1.java(Onactivityresult)

   @Override
   public void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub

    super.onActivityResult(requestCode, resultCode, data);
            if(resultCode == Activity.RESULT_OK){
    Log.i("called","called");
                 getActivity().setResult(Activity.RESULT_OK, data);
                 getActivity().finish();
           }


}

活动B:

send.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                 Log.i("called","btncalled");

                Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND, Uri.parse(Environment.getExternalStorageDirectory() + "/Smileys/" + imageUrls[pagerPosition].replace("assets://pics/", ""))); 

                FullImageActivity.this.setResult(Activity.RESULT_OK, shareIntent); //set the file/intent as result
                FullImageActivity.this.finish(); 
            }
        });

1 个答案:

答案 0 :(得分:0)

首先,请勿使用Activity.RESULT_OK作为请求代码。这是一个结果代码。 更改请求代码,例如&#34; 123&#34;或其他什么,我不知道。

然后,其次:

  • FullImageActivity.class内,确保使用您需要的内容构建Intent,然后调用

    Intent myIntent = new Intent();
    myIntent.putExtra("your_stuff_here");
    setResult(Activity.RESULT_OK, myIntent);
    finish();
    

以便您的代码执行将结果返回给调用它的片段。

    调用者片段(Fragment1)内的
  • 会调用super作为最后一件事。像这样:

    @Override 
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
     // TODO Auto-generated method stub 
     if(requestCode == "123" && resultCode == Activity.RESULT_OK){
     Log.i("called","called");
     //add your logic here
     } 
     super.onActivityResult(requestCode, resultCode, data);
     }