2017-07-07 43 views
-2

我有兩個片段:一個Activity中的fragmentA和dialogFragmentB。 fragmentB有兩個alertDialogs,它從dialogA開始,然後dialogA調用di​​smiss()並生成dialogB。 fragmentA具有方法onActivityResult()和dialogB(來自dialogFragmentB)必須在按鈕單擊後發送一些意圖結果。但在發送結果之前,我必須設置目標fragmentA。如何在dialogB的onClick方法中做到這一點?如何設置目標片段

我想我需要這樣的:

public void onClick(){ 
    ... 
    dialogB.dismiss(); 
    fragmentA.setTargetFragment(FragmentA, requestCode); 
} 

但我有一個錯誤:無法找到符號變量FragmentA

謝謝!

enter image description here

+0

您關閉dialogB並啓動片段你的dialogB的onDestroy。 – Ibrahim

+0

我不知道如何從fragmentB設置目標fragmentA: ???。setTargetFragment(???,requestCode); –

回答

0

我已經解決了我在明年的方式問題:

public class DialogFragmentB extends DialogFragment{ 
    ... 
    public Dialog onCreateDialog (Bundle b){ 
    // here i create two dialogs, first dialogA and then it calls dialogB 
    // finally dialogB has to return his datas and datas from dialogA in fragmentA 
     ... 
     public void onClick(View v){ 
     ... 
     FragmentManager fm = getFragmentManager(); 
     // these two code's lines resolved my headache -------------- 
     Fragment ft = fm.findFragmentByTag(FragmentA.FRAGMENT_A_TAG); 
     ft.setTargetFragment(ft, FragmentA.CODE_REQUEST); 
     // ---------------------------------------------------------- 
     dialogB.dismiss(); 
     sendResult(Activity.RESULT_OK, myData); 
     } 
     return dialogB; 
    } 
    // And here myData goes in onActivityResult in fragmentA 
    private void sendResult(int resultCode, MyData myData){ 
     if(getTargetFragment() == null){ 
      return; 
     } 
     Intent intent = new Intent(); 
     intent.putExtra(EXTRA_DATE_2, myData); 
     getTargetFragment().onActivityResult(getTargetRequestCode(), resultCode, intent); 
    } 
} 
1

使用變量引用而不是類名稱:

public void onClick(){ 
    ... 
    dialogB.dismiss(); 
    // note the lowercase "f" 
    fragmentA.setTargetFragment(fragmentA, requestCode); 
} 
+0

用這種方法fragmentA可以如何初始化,或者如何在dialogB的onClick方法中獲得FragmentA的實例? –