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将是一个很好的解决方案,您可以在这里找到一个详细的示例:检查整个项目以查看流程