2014-08-29 90 views
0

我想通過我的應用程序附加在WhatsApp上的圖像。我的應用程序包含兩個活動 答:它包含很多片段 B:只是一個活動onActivityResult在片段不叫

當我在我的Mainactivity上放置了一個意圖過濾器,其中包含用於選取圖像的片段。因此,這裏是發生了什麼:

試圖附加的圖片的WhatsApp - >打開Mainactivity(片段1)點擊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

我看不到一個錯誤在你的代碼之上。我建議你做一些改變: 1 - 用你的requestCode創建一個常量(例如:'private static final int REQUEST_CODE_SELECT_PICTURE = 1;'),當你調用startActivityForResult而不是Activity時使用它.RESULT_OK 2 - 檢查您的主要活動使用Log 接收到對onActivityResult的調用3 - 檢查是否有其他片段正在接收此返回 – MartinCR 2014-08-29 16:33:01

回答

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更改爲某個數字,它工作正常! – 2014-08-30 09:15:20