Java 如何对android活动进行代码重用?

Java 如何对android活动进行代码重用?,java,android,design-patterns,Java,Android,Design Patterns,活动的代码重用令人困惑。在正常情况下,我们可以设计一个父活动并将所有常用方法放在其中。例如: public class BaseActivity extends Activity{ @Override protected void doExit() { showDialog(DIALOG_EXIT_ALTER); } protected Dialog onCreateDialog(int id, Bundle args) { switch (id) {

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

 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();
 }
 }
然后,当按下后退按钮时,其他活动extend BaseActivity将显示alertdialog,而不是立即退出。 但在android框架中,有不止一个内置活动,如PreferenceActivity、ListActivity、ActivityGroup等

如果我的活动扩展了这些活动,那么它就不能使用BaseActivity.com中定义的公共代码,因为Java是单继承的。
那么,有没有其他方法可以推荐在android中对活动进行代码重用呢

由于
首选活动
列表活动
活动组
活动
的特殊形式,您必须在其相对上下文中使用它们


因此,如果您必须在项目中多次使用
Base
+[以上所有
Activity
],我的解决办法是拥有一份
Base
+[以上所有
Activity
]的副本,并扩展您的孩子
ListActivity
或任何专门的
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; } } 公共类活动助手{ 活动; 公共活动助手(活动){ 这个。活动=活动; } public Dialog onCreateDialog(int-id,Bundle-args){ //做很多有用的事情 返回结果; } } 在你的所有活动中使用它

protected Dialog onCreateDialog(int id, Bundle args) { return activityHelper(id, args); } 受保护的对话框onCreateDialog(int-id,Bundle-args){ 返回activityHelper(id,args); }
ActivityHelper将是一个很好的解决方案,您可以在这里找到一个详细的示例:检查整个项目以查看流程