0

我有一个属于活动“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();
                    }
                }
                        )
4

2 回答 2

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

... et Voilà:活动独立。

于 2013-05-27T20:00:10.297 回答
-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();
于 2013-05-27T20:08:36.720 回答