用于活动的代码重用令人困惑。在正常情况下,我们可以设计父活动并将所有常用方法放入其中。如下:
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等。
如果我的活动扩展了那些活动,那么它就不能使用BaseActivity中定义的公共代码。因为Java的单一继承。 那么有没有其他方法建议在android中进行代码重用?
答案 0 :(得分:2)
创建一个新的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); }
答案 1 :(得分:1)
由于PreferenceActivity
,ListActivity
,ActivityGroup
是Activity
的特殊形式,您必须在相关背景中使用它们。
因此,恕我直言的解决方法是拥有Base
+ [以上Activity
全部]的一份副本,如果您必须在项目中多次使用它们,并扩展您的孩子ListActivity
或者其他专业Activity
。