Show DialogFragment from onActivityResult

前端 未结 17 1229
傲寒
傲寒 2020-12-04 06:47

I have the following code in my onActivityResult for a fragment of mine:

onActivityResult(int requestCode, int resultCode, Intent data){
   //other code
   P         


        
17条回答
  •  自闭症患者
    2020-12-04 07:12

    EDIT: Yet another option, and possibly the best yet (or, at least what the support library expects...)

    If you're using DialogFragments with the Android support library, you should be using a subclass of FragmentActivity. Try the following:

    onActivityResult(int requestCode, int resultCode, Intent data) {
    
       super.onActivityResult(requestCode, resultCode, intent);
       //other code
    
       ProgressFragment progFragment = new ProgressFragment();  
       progFragment.show(getActivity().getSupportFragmentManager(), PROG_DIALOG_TAG);
    
       // other code
    }
    

    I took a look at the source for FragmentActivity, and it looks like it's calling an internal fragment manager in order to resume fragments without losing state.


    I found a solution that's not listed here. I create a Handler, and start the dialog fragment in the Handler. So, editing your code a bit:

    onActivityResult(int requestCode, int resultCode, Intent data) {
    
       //other code
    
       final FragmentManager manager = getActivity().getSupportFragmentManager();
       Handler handler = new Handler();
       handler.post(new Runnable() {
           public void run() {
               ProgressFragment progFragment = new ProgressFragment();  
               progFragment.show(manager, PROG_DIALOG_TAG);
           }
       }); 
    
      // other code
    }
    

    This seems cleaner and less hacky to me.

提交回复
热议问题