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