活动的代码重用令人困惑。在正常情况下,我们可以设计一个父活动并将所有通用方法放入其中。喜欢跟随:

 public class BaseActivity extends Activity{
 @Override
  protected void doExit() {
     showDialog(DIALOG_EXIT_ALTER);
 }
 protected Dialog onCreateDialog(int id, Bundle args) {
     switch (id) {
     case DIALOG_EXIT_ALTER:
     return new AlertDialog.Builder(BaseUIActivity.this)
         .setTitle("Exit?")
         .setPositiveButton("Yes",
                new DialogInterface.OnClickListener() {
                    public void onClick(
                            DialogInterface dialoginterface, int i) {
                    close();
                    }
                })
         .setNeutralButton("No",null).create();
     default:
     return null;
     }
 }
 protected void close() {
     finish();
 }
 }


然后扩展BaseActivity的其他活动将显示警报对话框,而不是在按下后退按钮时立即退出。
但是在android框架中,有多个内置的活动,例如PreferenceActivity,ListActivity,ActivityGroup等。

如果我的活动扩展了那些活动,则由于Java的单一继承,它无法使用BaseActivity.Base中定义的通用代码。
那么,还有其他方法建议对Android活动进行代码重用吗?

最佳答案

创建一个新的类ActivityHelper。

公共类ActivityHelper {

    活动活动;

    public ActivityHelper(活动活动){
        this.activity =活动;
    }

    公共对话框onCreateDialog(int id,Bundle args){
        //做很多有用的事情
        返回结果;
    }
}


在所有活动中使用它。


    受保护的对话框onCreateDialog(int id,Bundle args){
        返回activityHelper(id,args);
    }

10-07 19:56