Java 未调用片段中的onActivityResult

Java 未调用片段中的onActivityResult,java,android,android-fragments,whatsapp,Java,Android,Android Fragments,Whatsapp,我正试图通过我的应用程序在whatsapp上附加一个图像。我的应用程序包含两个活动 A:里面有很多碎片 B:只是一项活动 当我在我的Mainactivity上放置了一个意图过滤器,其中包含用于拾取图像的片段。下面是发生的情况: 尝试将图片附加到whatsapp->Open Main活动(碎片1)单击Gridview项目->转到活动B 当我点击B中的按钮将数据发送回Whatsapp时,它返回到Mainactivity,它甚至不调用Fragment的OnActivityResult方法。我必须把数据

我正试图通过我的应用程序在whatsapp上附加一个图像。我的应用程序包含两个活动 A:里面有很多碎片 B:只是一项活动

当我在我的Mainactivity上放置了一个意图过滤器,其中包含用于拾取图像的片段。下面是发生的情况:

尝试将图片附加到whatsapp->Open Main活动(碎片1)单击Gridview项目->转到活动B

当我点击B中的按钮将数据发送回Whatsapp时,它返回到Mainactivity,它甚至不调用Fragment的OnActivityResult方法。我必须把数据送回whatsapp。 我已经研究了与这个问题有关的每一个问题。但什么都不管用/

我使用的代码:

java(包含片段)

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);


        }

    }); 
活动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(); 
            }
        });

首先,不要将
Activity.RESULT\u OK
用作请求代码。这是一个结果代码。 更改请求代码,比如“123”之类的,我不知道

然后,第二:

  • 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);
     } 
    

我看不出您上面的代码有错误。我建议您做一些更改:1-使用requestCode创建一个常量(例如:
private static final int REQUEST\u code\u SELECT\u PICTURE=1;
)并在调用startActivityForResult而不是Activity时使用它。RESULT_OK 2-使用日志3检查主活动是否接收到对onActivityResult的调用-检查其他片段是否接收到此返回谢谢!我将requestcode活动。OK更改为某个数字,它成功了!
Intent myIntent = new Intent();
myIntent.putExtra("your_stuff_here");
setResult(Activity.RESULT_OK, myIntent);
finish();
@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);
 }