Android - 属于2个活动的片段中的对话框

问题描述:

我得到属于活动“Activity_Joueurs”的片段。在这个片段中有一个对话框。因此,下面的代码在对话框正向点击:Android - 属于2个活动的片段中的对话框

((Activity_Joueurs)getActivity()).doPositiveClick()

这是运作良好。现在我想从另一个活动“Activity_Pseudo”重用这个片段。这是我卡住的地方。我如何让这部分代码活动独立?

@Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     return new AlertDialog.Builder(getActivity()) 
       .setIcon(R.drawable.ic_launcher) 
       .setTitle(R.string.question_delete_joueur) 
       .setPositiveButton(R.string.yes, 
         new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int whichButton) { 
         ((Activity_Joueurs) getActivity()).doPositiveClick(); 
        } 
       } 
         ) 

你应该开始与Interfaces工作,而不是铸造它的具体的类,像你现在在做的活动:

((Activity_Joueurs) getActivity()).doPositiveClick(); 

...你先定义一个接口:

public interface IFragmentCallback { 
    public void doPositiveClick(); 
} 

...然后你让你的activites实现这个接口,例如Activity_Joueurs

public Activity_Joueurs extends Activity implements IFragmentCallback{ 
    //... 
    @Override 
    public void doPositiveClick(){ 
    //Implementation 
    } 
} 

...下一页你Dialog更改调用是这样的:

((IFragmentCallback) getActivity()).doPositiveClick(); 

...等瞧:活动无关。

+0

非常感谢如下!效果很好。留言Merci。 – Phil

您可以使用静态方法创建一个类以返回一个对话框,然后可以从任何Activity中调用它。

class MyAlerts{ 

    public static Dialog getAlert1(Activity activity, DialogInterface.OnClickListener listener){ 
     return new AlertDialog.Builder(activity) 
      .setIcon(R.drawable.ic_launcher) 
      .setTitle(R.string.question_delete_joueur) 
      .setPositiveButton(R.string.yes, listener).create; 

    } 

} 

它可以作为任何活动

MyAlerts.getAlert1(this, new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // do something 

     } 
    }).show();