2014-08-29 2 views
0

내 앱을 통해 whatsapp에 이미지를 첨부하려고합니다. 내 응용 프로그램에는 두 가지 활동이 포함되어 있습니다. A : 많은 조각이 포함되어 있습니다. B : 그냥 활동조각에있는 onActivityResult가 호출되지 않았습니다.

이미지를 선택하기위한 조각이 포함 된 내 Mainactivity에 의도 필터를 넣었을 때. 그래서 여기에 무슨이다 :

는 WHATSAPP 할 수있는 사진을 첨부 할 시도 -> 열기 Mainactivity이 (Fragment1가) GRIDVIEW 항목을 클릭 ->이 활동 B로 이동

내가 다시 데이터를 전송하는 B에서 버튼을 클릭 Whatsapp에, 그것은 Fragment의 OnActivityResult 메소드를 호출하지 않는 Mainactivity로 돌아갔다. 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

. 1 - requestCode로 상수를 생성하십시오 (예 :'private static final int REQUEST_CODE_SELECT_PICTURE = 1;'). Activity.RESULT_OK 대신 startActivityForResult를 호출 할 때 사용하십시오. 2 - 확인하십시오. 주요 활동이 로그를 사용하여 onActivityResult에 대한 호출을받습니다. 3 - 다른 프래그먼트가이 리턴을 수신하는지 확인하십시오. – MartinCR

답변

0

먼저, Activity.RESULT_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); 
    } 
    
+0

감사! 요청 코드 Activity.OK를 일부 번호로 변경했습니다. –

관련 문제