![](/img/trans.png)
[英]Android LiveData - how to reuse the same ViewModel on different activities?
[英]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); }
由于PreferenceActivity
, ListActivity
, ActivityGroup
是特殊形式Activity
,你必须在它们的相对上下文中使用它们。
因此,恕我直言,解决方法是如果需要在项目中使用一次,则必须拥有一份Base
+ [以上所有Activity
],然后扩展子ListActivity
或它的任何Specialized Activity
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.