1. 程式人生 > >Fragment中呼叫onActivityForResult處理

Fragment中呼叫onActivityForResult處理

The activity hosting this fragment has its onActivityResult called when the camera activity returns

My fragment starts an activity for result with the intent sent for the camera to take a picture. The picture application loads fine, takes a picture, and returns. The onActivityResult however is never hit. I’ve set break points but nothing is triggered. Can a fragment have onActivityResult? I’d think so since its a provided function. Thoughts on why this isn’t being triggered?

ImageView myImage = (ImageView)inflatedView.findViewById(R.id.image);
myImage.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View view) {
        Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(cameraIntent, 1888
); } }); @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if( requestCode == 1888 ) { Bitmap photo = (Bitmap) data.getExtras().get("data"); ((ImageView)inflatedView.findViewById(R.id.image)).setImageBitmap(photo); } }

So I figured out the problem and will post the answer for anyone else experiencing this issue. The hosting activity overrode the onActivityResult but did not make a call to super.onActivityResult for unhandled result codes. Apparently even though the fragment is the one making the startActivityForResult call, the activity gets the first shot at handling the result. This makes sense when you consider the modularity of fragments. Once I implemented super.onActivityResult for all unhandled results, the fragment got a shot at handling the result.

And also from @siqing answer

To get the result in your fragment make sure you call : startActivityForResult(intent,111);instead of
getActivity().startActivityForResult(intent,111); inside your fragment.

解決方法就是:
在Fragment中直接呼叫startActivityForResult()方法,
而不是呼叫 getActivity().startActivityForResult()。

相關推薦

Fragment呼叫onActivityForResult處理

The activity hosting this fragment has its onActivityResult called when the camera activity returns My fragment starts an activity

Fragment呼叫startActivityForResult的那些坑

本文首發於公眾號“AntDream”,歡迎微信搜尋“AntDream”或掃描文章底部二維碼關注,和我一起每天進步一點點 Fragment中呼叫startActivityForResult要注意幾種情況 用getActivity方法發起呼叫,只有父Activity的onActivityResul

關於android在fragment呼叫getActivity()功能進行Toast或者setAdapter時空指標的異常

最近幾天發現線上版本,多了好多NullPointerException空指標異常的錯誤。仔細檢查發現大多實在fragment中呼叫getActivity方法時造成的。我想原因可能是使用者請求網路了但是一直沒結果就點選返回按鈕了,你的activity被finish掉了但是非同

Fragment呼叫startActivityForResult問題

在使用support v4中的Fragment時,如果我們需要呼叫startActivityForResult方法來與跳轉的Activity進行通訊時,如果希望Fragment的onActivityResult方法能夠被響應,我們就必須呼叫Fragment的startAct

Android Fragment使用(四) Toolbar使用及Fragment的Toolbar處理

Toolbar作為ActionBar使用介紹 本文介紹了在Android中將Toolbar作為ActionBar使用的方法. 並且介紹了在Fragment和巢狀Fragment中使用Toolbar作為ActionBar使用時需要注意的事項. 使用support libra

Fragment呼叫getActivity為null的問題

在使用fragment的時候經常會遇到getActivity()為null的情況。比如我在一個非同步網路請求的回撥中呼叫了getActivity()就會出現空指標問題。之前解決這個問題,通常都是直

Android踩坑隨筆FragmentonActivityResult方法不被呼叫

最近專案裡要做頭像功能,參考了這篇部落格(GitHub - zhudfly/SelectAvatarApplication: 一個選擇並顯示頭像圓形控制元件,可以通過拍照或者選擇相簿中的圖片來設定圖片),但是在使用過程中出現拍照無響應,幾經查詢,原因是在Fragment中覆寫onActivityResult(

Python呼叫自然語言處理工具HanLP手記

HanLP方法封裝類: 1. # -*- coding:utf-8 -*- 2. # Filename: main.py 3. 4.from jpype import * 5.  5.startJVM(getDefaultJVMPath(), "-Djava.class.path=C:\h

C#呼叫Windows訊息處理

引入User32.dll中的方法進行處理: public class Win32ApiMessage { [StructLayout(LayoutKind.Sequential)] public struct MSG {

Qt 學習之路 2(19):事件的接受與忽略(當重寫事件回撥函式時,時刻注意是否需要通過呼叫父類的同名函式來確保原有實現仍能進行!有好幾個例子。為什麼要這麼做?而不是自己去手動呼叫這兩個函式呢?因為我們無法確認父類的這個處理函式有沒有額外的操作)

版本: 2012-09-29 2013-04-23 更新有關accept()和ignore()函式的相關內容。 2013-12-02 增加有關accept()和ignore()函式的示例。 上一章我們介紹了有關事件的相關內容。我們曾經提到,事件可以依情況接受和忽略。現在,我們就

viewpager+fragment處理網路請求

本文借鑑https://blog.csdn.net/learningcoding/article/details/79244443 使用 FragmentPagerAdapter介面卡 fragment父類程式碼如下 public abstract class LazyLoadBaseF

FragmentRecyclerView的使用解析,以及監聽事件處理

RecyclerView是可以代替listview使用的新元件,個人感覺其主要特色:其介面卡adapter中,重寫的東西少了,頁面展示的效果跟加多了,比如可以在RecyclerView設定listview的顯示效果,也可以設定gridview的顯示效果,也可以設定瀑布流的顯示效果!下面程式碼主要

在一個元件呼叫其他元件的內容||android怎樣在activity獲取fragment的控制元件

//getFragmentManager().findFragmentById(id).getView().findViewById(id); // 此句截自百度知道 詳見google 官方藍芽裡BluetoothChatFragment中setupChat()方法button呼叫EditTex

在批處理呼叫JS操作MongoDB

批處理檔案內容: ::表示在此語句後所有執行的命令都不顯示命令列本身 @echo off echo 測試 ::進入d盤 D: cd \software\MongoDB\bin mongo 192.1

如何在批處理呼叫多個批處理?

如何在一個批處理中呼叫多個批處理呢? call 1.bat call 2.bat call 3.bat call …….bat 這樣是不行的。哪位高手指點一下,該如何實現呢? 把CALL改成start 不過這樣會開啟新的CMD視窗,你也可以給start加個/B就可以在同一

Js$.ajax呼叫一般處理程式(.ashx)

     $.ajax({                     type: "post",                     url: "/tools/ActApply.ashx",

awk呼叫系統命令批量處理

工作中經常遇到在輸入一堆檔名的條件下,將其移動或者刪除或者複製。由於輸入是個檔名的集合,而不是單個檔案,因此不能直接用cp或者mv命令,可以通過awk的逐行處理的功能來處理這種情況。以下是一個例子: $ grep -r 'TE' * | cut -d " " -f3 | a

angular4在typeScript怎麼呼叫過濾器處理時間格式

需求中要對時間格式化的處理,處理成類似20180323的型別,在過濾器中有定義和引入了時間格式轉化的方法:import {Pipe, PipeTransform} from '@angular/core';@Pipe({ name: 'datex'})export clas

AndroidFragmentonActivityResult不被呼叫的解決方案

    android開發中,Fragment+ViewPager已經很常見了。其實遇到這個問題,其實挺尷尬的,我相信有很多小夥伴都遇到這個問題。我也在網上找了很多資料,說什麼是android原生的問題,程式設計師偷懶了,沒有處理這個事件分發等。 指錢看過這位仁兄的文章,

處理呼叫 WinSCP 命令列上傳檔案

@echo off setlocal enabledelayedexpansion set ID=AY47C010 REM 設定檔案的路徑 set SHELL_DIR=H:\IDE\eclipse\workspace\XXXX\shell set CLASSES_DIR=H