1

我最近建立了一個標準列表DialogFragment在我的活動,以建立一個AlertDialog可以看出作爲答案在這裏:如何重新使用我的警報DialogFragment獲取結果?

What is the best way to recreate an AlertDialog when the screen is rotated?

現在我想重新使用這個片段的3個不同的「,彈出「我的活動中的選擇列表。對於三個按鈕中的每一個,我需要確定調用按鈕以確定選擇列表中的項目時要採取的操作。

什麼是實現這一目標的最佳途徑?

目前我在想,我需要將調用按鈕ID傳遞給DialogFragment,然後在對話框完成時將結果傳遞迴活動。有沒有更好的方法來實現這個目標?

回答

0

我想可能實現你要什麼的,只是有你的DialogFragment內三種不同的聽衆,然後對每個制定者的最簡單方法。然後,當您將警報對話框構建爲片段時,您可以定義每個偵聽器的onClick方法在調用方法中的作用。因此,像這樣:

protected DialogInterface.OnClickListener mListener1; 
protected DialogInterface.OnClickListener mListener2; 
protected DialogInterface.OnClickListener mListener3; 

public void setListener1(final YourDialogFragment.OnClickListener passedListener) { 
    mListener1 = new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      listener.onClick(getActivity(), dialog, which); 
     } 
    }; 
} 

然後調用DialogFragment的代碼裏面,調用是這樣的:

// Building the Dialog Fragment here 

YourDialogFragment.setListener1(new YourDialogFragment.OnClickListener() { 
    @Override 
    public void onClick(FragmentActivity activity, DialogInterface dialog, int which) { 
     // Whatever you want to happen when you click goes here 
    } 
}); 

理想情況下,你做某種幫手所以你沒有明確只取參數從一個活動中調用set方法,但這是它的要點。

+0

嗨韋斯,我使用的界面是這樣 公共接口testDialogListener { public void onDialogClick(DialogFragment dialog,int which); } –

+0

我是否應該使用您指定的DialogInterface.OnClickListener(mListener1等)而不是自定義的,然後爲每個實現內置的onClick方法? –

+0

當我嘗試按照上述操作時遇到問題 - 最終YourDialogFragment.OnClickListener passedListener。最後,我試圖創建自己的界面:/ –

0

我會建議你從另一個片段顯示對話框片段,您可以實現的onClick監聽器,並使用setTargetFragment()告訴誰,它正在與對話片段..

dialogFragment.setTargetFragment(this, 0); 

,並使用getTargetFragment()來從DialogFragment獲取父代片段。

這裏是從樣本程序的一些代碼片段..

 // Retrieve the progress bar from the target's view hierarchy. 
     mProgressBar = (ProgressBar)getTargetFragment().getView().findViewById(
       R.id.progress_horizontal); 

,你也可以使用的onCreate setRetainInstance(true)()方法來告訴框架嘗試配置過程中暫時保留這個片段改變

this answer獲得更多的想法,希望這有助於..

相關問題