【发布时间】:2015-12-21 11:23:28
【问题描述】:
我有一个 android 应用程序项目,它也有一些 android 库项目。每个图书馆项目都有自己的活动和资源。我已经实现了NavigationDrawer 并希望在所有活动中都使用它,所以我创建了一个具有抽屉的基础项目(android 库项目)(按照此答案中的指南:Same Navigation Drawer in different Activities)。然后的想法是每个子项目(android库项目)将从基础扩展,但此时我遇到了循环引用问题。
我的结构与这张图片上的相似:
让子项目中的每个活动都从基础库扩展没有问题,但问题是基础库也需要知道活动(因此循环引用),以便我可以处理点击NavigationDrawer,类似的东西:
mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 0:
Intent intent = new Intent(this, SubProjectOneActivityOne.class);
startActivity(intent);
finish();
break;
case 1:
Intent intent1 = new Intent(this, SubProjectOneActivityTwo.class);
startActivity(intent1);
break;
case 2:
Intent intent2 = new Intent(this, SubProjectTwoActivityOne.class);
startActivity(intent2);
break;
default:
break;
}
}});
所以目前我用这种方法遇到了死胡同。是否可以在子项目中重载点击事件?有人有其他建议吗?
【问题讨论】:
-
我已经通过提供
router对象来处理这个问题。基础项目可以公开它,并且每个其他模块都可以注册一个路由。这些路由可以执行可能会或可能不会启动活动的操作。 -
@daentech 你能分享更多信息和可能的代码吗?
-
这里有一些示例代码。我希望它可以编译,但我删除了一些不必要的代码。您可以将您的路线命名为基础项目中的常量,并可能在其他项目中引用它们吗? gist.github.com/daentech/f372f3a6529d08979f1c 这也可以使用
/route/<variable>处理通配符路由,并将意图中的数据作为getData()传递 -
@daentech
TransitionUtils是什么? -
抱歉,如果您刷新它,我已将其删除。我有一些静态助手来管理活动之间的动画转换
标签: android android-activity android-library