关键字

Manifest AndroidManifest Activity

摘要:

本文介绍了在Manifest中注册以内部类形式存在的Activity;

问题

  • 在《Android编程权威指南》P127中,作者建议我们坚持AUF(Always Use Fragments)原则,即“总是使用fragment”;
    另外作者封装了一个很好用的SingleFragmentActivity类,但是这个类通常只有一句话,。
    个人觉得,为每一个Activity都建立一个文件有点浪费。
    可是使用Activity(四大组件之一),必须在Manifest中注册。
    那么能不能将所有这类Activity放在一个类中进行管理呢?
    通过搜索关键字:android manifest innerclass 找到了方法;

解答

  1. As someone pointed out, in AndroidManifest, use the $ sign, like:
  2. Declare class B as static:
    public static class B

例如

【Activity管理类】

//: .../activity/ActivityMgr.javapublic class ActivityMgr {    public static void start(Activity context, Class clazz){        Intent intent = new Intent(context, clazz);        context.startActivity(intent);    }    public static class LoginActivity extends SingleFragmentActivity {        @Override        public Fragment createFragment() {            return new LoginFragment();        }    }    public static class ForgetPasswordActivity extends SingleFragmentActivity {        @Override        public Fragment createFragment() {            return new ForgetPasswordFragment();        }    }    public static class RegisterActivity extends SingleFragmentActivity {        @Override        public Fragment createFragment() {            return new RegisterFragment();        }    }    public static class AddDeviceActivity extends SingleFragmentActivity {        @Override        public Fragment createFragment() {            return new AddDeviceFragment();        }    }}

【Activity注册】

<activity    android:name=".activity.ActivityMgr$LoginActivity"    android:clearTaskOnLaunch="true"    android:launchMode="singleTask"    android:screenOrientation="portrait"    android:theme="@style/AppTheme.NoActionBar">    <intent-filter>        <action android:name="android.intent.action.MAIN"/>        <category android:name="android.intent.category.LAUNCHER"/>    intent-filter>activity><activity    android:name=".activity.ActivityMgr$RegisterActivity"    android:screenOrientation="portrait"    android:theme="@style/AppTheme.NoActionBar">activity><activity    android:name=".activity.ActivityMgr$ForgetPasswordActivity"    android:screenOrientation="portrait"    android:theme="@style/AppTheme.NoActionBar">activity><activity    android:name=".activity.ActivityMgr$AddDeviceActivity"    android:screenOrientation="portrait"    android:theme="@style/AppTheme.NoActionBar">activity>

【启动对应Activity】

// 启动忘记密码ActivityActivityMgr.start(mContext, ActivityMgr.ForgetPasswordActivity.class);// 启动注册ActivityActivityMgr.start(mContext, ActivityMgr.RegisterActivity.class);

扩展

  • 同样的方式也可以用于Receiver的注册;

参考资料

  • Declare Inner Activity In The Android Manifest
  • Receiver as inner class in Android

更多相关文章

  1. Android(安卓)Studio一个连接SQLite数据库的登录注册实现
  2. android 笔记 --- Intent 应用
  3. 在Titanium中使用Android的Service
  4. 在程序开发中必须了解Activity的四种启动模式
  5. 【 Android(安卓)10 系统启动 】系列 -- init(天字一号进程)
  6. Android绘制流程窗口启动流程分析(中)
  7. Android(安卓)AnimationDrawable运行的几种方式
  8. android精要――BroadcastReceiver
  9. 【Android】关于FLAG_ACTIVITY_NEW_TASK 和 taskAffinity

随机推荐

  1. 数据科学家年薪12万美元算高吗?我爬取近6
  2. 20201112 装饰器之函数即变量
  3. 0323作业-css基础知识3
  4. 使用grid实现一个12列栅格布局的组件,并g
  5. flex弹性盒模型常用项目属性及仿写移动端
  6. 【归纳】赶紧收藏css实现水平垂直居中的
  7. 全国软考报考一文搞定,软考报考网址及证书
  8. 【归纳】CSS实现单行和多行文本溢出显示
  9. 0323作业-CSS基础知识2
  10. 【归纳】速来看img图片之间的空白间隙的6