簡體   English   中英

片段中的onActivityResult不被調用

[英]onActivityResult in fragment not called

我正在嘗試通過我的應用程序將圖像附加在whatsapp上。 我的應用程序包含兩個活動A:包含許多片段B:只是一個活動

當我在Mainactivity上放置一個意圖過濾器時,其中包含用於拾取圖像的片段。 所以這是發生了什么:

嘗試將圖片附加到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(); 
            }
        });

首先,不要使用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); } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM