此问题我特定于Android
以及可以由所有其他活动扩展的基础Activity
的使用。通常w.r.t Java我理解abstract classes
的用法和功能。我的情况我有一个基本活动与一些常见的常量,函数和实现一些Interfaces
。我的问题应该是abstract
,还是可以将其保留为正常Activity
。它是否有特定原因abstract
。
//Standard BaseActivity
public abstract class BaseActivity extends Activity {
//common code
}
//Usage
public class MyActivity extends BaseActivity {
}
如果我将BaseActivity定义如下
,这似乎也有效//Non Abstract Class
public class BaseActivity extends Activity {
}
因此,问题是使用抽象的具体原因。 在这两种情况下,我都没有在Manifest中定义BaseActivity。
答案 0 :(得分:3)
您可以参考以下方式来定义BaseActivity。
在android中创建baseActivity总是一个好主意 项目
我建议的是从android.app.Activity创建一个名为baseActivity的活动,并使3自定义活动从baseActivity扩展。
例如,
public abstract class MyAppBaseActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
以及您的自定义活动
public class MyCustomActivity extends MyAppBaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
请注意,MyAppBaseActivity是一个抽象类。原因是,我们不打算实例化它。这就是您不需要在AndroidManifest.xml文件中添加MyAppBaseActivity类的原因。
现在的问题是,你为什么要这样做?意思,为什么你需要 创建一个baseActivity类,然后将您的其他活动作为一个 它的子类?
嗯,这里有一些非常普遍的原因
1。您可以避免应用程序明智的常见ui任务的代码重复。假设您要在不同的活动中显示progressDialog。只需编写代码以在baseActivity中显示progressDialog并从其他活动中调用该方法。
2。您的应用程序菜单应该在不同的应用程序中保持一致。例如,您有一个设置屏幕。选项菜单包含导航到设置屏幕。您应该在整个应用程序中显示设置,这意味着无论活动如何。用户希望从应用程序的任何位置访问设置屏幕。此功能很容易实现,但您必须在每个活动中覆盖onCreateOptionsMenu,或者您可以在baseActivity中覆盖一次。