java - 如何实现android Activity的代码复用?

标签 java android design-patterns

Activity 的代码重用令人困惑。一般情况下我们可以设计一个父Activity,把所有常用的方法放在里面。就像下面这样:

 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 的 Activity 将显示一个警报对话框,而不是在按下后退按钮时立即退出。 但在android框架中,内置的activity不止一个,比如PreferenceActivity、ListActivity、ActivityGroup等。

如果我的 Activity 扩展了这些 Activity ,那么它就不能使用 BaseActivity 中定义的公共(public)代码。因为 Java 的单一继承。 那么还有其他方法推荐对 Android 中的 Activity 进行代码重用吗?

最佳答案

创建一个新类 ActivityHelper。

public class ActivityHelper {

    Activity activity;

    public ActivityHelper(Activity activity) {
        this.activity = activity;
    }

    public Dialog onCreateDialog(int id, Bundle args) {
        // do many usefull things
        return result;
    }
}

在您的所有 Activity 中使用它。


    protected Dialog onCreateDialog(int id, Bundle args) {
        return activityHelper(id, args);
    }

关于java - 如何实现android Activity的代码复用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9240265/

相关文章:

java - 减少 JPanel 之间的间隙

java - 正则表达式在方法 replaceAll() 中不起作用 - Android

Android MotionLayout中的CustomAttribute改变TextView中的Text

c# - 桥接模式还是工厂模式?

java - 如何升级使用 ORM 工具构建的数据库模式?

java - 如何以矩阵格式排列输出?#java

java - 编辑 JTable 中新添加的行

android - 移动数据同步

java - 在 Http Requester 的 Java 设计方面需要帮助

java - 通过静态标识符从数据库接收数据(Java 中的示例)