繁体   English   中英

如何为Android活动重用代码?

[英]How to do code reuse for android activities?

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

 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将显示alertdialog而不是在按下后退按钮时立即退出。 但是在android框架中,有多个内置的活动,例如PreferenceActivity,ListActivity,ActivityGroup等。

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

创建一个新的类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;
    }
}

在所有活动中使用它。

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

由于PreferenceActivityListActivityActivityGroup是特殊形式Activity ,你必须在它们的相对上下文中使用它们。

因此,恕我直言,解决方法是如果需要在项目中使用一次,则必须拥有一份Base + [以上所有Activity ],然后扩展子ListActivity或它的任何Specialized Activity

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM