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

时间:2013-05-27 19:49:49

标签: android android-activity android-fragments alertdialog

我有一个属于活动“Activity_Joueurs”的片段。在这个片段中有一个对话框。因此,下面的代码在对话框中单击肯定:

  

((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();
                    }
                }
                        )

2 个答案:

答案 0 :(得分:1)

你应该开始使用Interfaces,而不是将活动转移到它的具体类,就像你现在这样做:

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

...首先定义一个界面:

public interface IFragmentCallback {
   public void doPositiveClick();
}

...然后你让你的活动实现这个界面,例如Activity_Joueurs

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

...在Dialog的下一个内容中,您将呼叫更改为以下内容:

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

......etVoilà:独立活动。

答案 1 :(得分:-1)

您可以使用静态方法创建一个类来返回一个Dialog,然后可以从任何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();