使用图书馆的活动

Using activities from library

我正在创建我的第一个库以在未来的一些项目中使用,我正在创建一些在每个项目中都相同的活动。

现在我正在处理一个测试项目,在我的库中我有这个登录名Activity。它有自己的布局并且工作正常。

如何让我的测试应用程序登录Activity成为库中的应用程序?目前,我正在将我的 LoginActivity 从库扩展到我在项目中的 activity。考虑到所有代码逻辑都发生在库 activity 上,这是正确的做法吗?

图书馆登录Activity

public class LoginActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        // Some useless code...

    }
}

项目登录Activity

public class MainActivity extends LoginActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Nothing happens in this class... really...

    }

}

将登录 activity 添加到库或应用程序中的 AndroidManifest.xml。

<application>
        <activity
            android:name="com.mypackage.LoginActivity" />

</application>

确保库项目中的 Activity 是在库的清单文件中声明的。然后启动 activity,就像通常启动任何其他 activity 一样。如果您希望 activity 成为应用程序启动时的第一个 activity(启动器 activity),您需要在清单中明确声明它并添加一个 intent-filter 标签元素作为子元素,表示它应该是启动器 activity。查看此 post.. 另一种大致达到相同效果的方法是创建一个空白 activity ,它在应用程序清单文件中声明为启动器 activity 并在 onCreate 方法内部启动库 activity。确保清除所有 activity 转换,以便无缝切换到库 activity。这种方法的好处是您可以在启动库之前执行检查 activity.

例如。检查是否需要显示登录 activity 或者屏幕是否可以 by-passed 并且可以立即进入应用程序。