我正试图通过我的应用程序在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();
}
});
答案 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);
}