Android中的动态启动活动?
有没有一种方法可以根据条件动态更改Android中的开始活动?我试图做(没有工作)是以下几点:Android中的动态启动活动?
- 删除在我的AndroidManifest.xml
- 定义创建一个自定义应用程序类应用程序使用
- 覆盖的发射器类别我的应用程序类的onCreate方法定义如下的一些代码:
。
if (condition) {
startActivity(new Intent(this, MenuActivity.class));
} else {
startActivity(new Intent(this, LoginActivity.class));
}
为什么不能有一个初步的Activity
没有用户界面,检查条件的onCreate
,然后启动下一个Activity
,然后在本身调用finish()
?我从来没有从onCreate()
内拨打过finish()
,所以我不确定这是否可行。
编辑
似乎工作正常。这里有一些代码可以使它更清晰。
初始Activity
:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent;
if (condition) {
intent = new Intent(this, ClassA.class);
} else {
intent = new Intent(this, ClassB.class);
}
startActivity(intent);
finish();
// note we never called setContentView()
}
其他Activity
:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
你有没有用户界面的活动?我认为活动的重点是向用户展示一些东西,但也许我需要重新阅读Android基础知识...... – 2011-01-31 22:00:44
@Matt Huggins我只是在我的临时工作区尝试过它,它似乎工作正常。 – 2011-01-31 22:08:54
这是我亲自做我的小的移动项目之一。而不是创建一个单独的,画面不太Activity
中条件并启动相应的屏幕,我把情况一Activity
,做了动态setContentView()
,如:这种方法
if (!userIsLoggedIn) {
setContentView(R.layout.signup);
} else {
setContentView(R.layout.homescreen);
}
两个重要注意事项:
1:不要在onCreate()
中编写该文件,而应该在onResume()
的范围内进行决策,因为只要屏幕需要显示在前面,就会始终调用后者。你可以从Android activity life cycle看到。因此,例如,如果用户刚刚下载我的应用程序并首次启动它,因为没有用户登录,她将被引导至注册页面。当她完成注册并由于某种原因按下HOME
按钮(不是BACK
,完全退出应用程序!),然后恢复应用程序,她将看到的布局已经是主屏幕。如果我在onCreate()
内部添加条件,那么会显示的是注册屏幕,因为根据生命周期,当将应用程序返回到前台时,它不会返回到onCreate()
。
2:该解决方案只有在合并这两个活动的功能时才是理想的,不会产生长长的恶魔般的代码块。就像我说的,我的项目是一个小型项目(其主要功能发生在后台),因此单个动态项目没有太多内容。无屏幕的Activity
绝对是如果你需要你的代码更易于阅读的方式。
正是我所搜索的,谢谢你已经问过这个问题。 – mad 2011-02-14 08:38:54