当我在这里搜索时有很多布局问题,但我找不到解决这个问题的方法 - 而且可能是因为我的方法不对,或者可能用错误的术语来描述我的意思试图实现。如果在其他地方得到解答,我会事先道歉,但会很感激一些指示。
我想要做的是有一个登录任务的屏幕,然后一旦登录我转到另一个屏幕做一些其他的东西(这个屏幕将有一个完全不同的布局)。
我的问题是:我可以有两个单独的布局(即:main.xml和login.xml),并根据我在代码中的位置,只需更改它们吗?如果是这样,怎么样?
我确实尝试在代码中添加setContentView(R.layout.login);
,但它似乎只选择最后一个并坚持使用它,无论代码在哪里。我还尝试将登录部分分成另一个类,然后使用startActivity(new Intent(this, Login.class));
来调用它,但它几乎就像它与主应用程序并行运行一样,因为主应用程序中的内容在登录完成之前一直保持运行。 / p>
ie:在主要活动中:
startActivity(new Intent(this, Login.class));
Toast.makeText(this, "This is main", Toast.LENGTH_LONG).show();
然后我弹出登录屏幕,其上面会弹出Toast消息 - 无论我在登录活动中做什么,主活动都会继续。登录活动不只是结束 - 我需要杀死它,还是对它执行System.exit()?
我希望它的一些简单我做错了,我想尝试从各种网站和我拥有的两本教科书中汲取创意,但似乎没有任何工作。
非常感谢任何帮助或想法
答案 0 :(得分:3)
执行此操作的正确方法是让两个活动MainActivity
和LoginActivity
各自拥有自己的布局。如果你不采取这种方法,你将进入后退地狱。
(Re。“即使在登录完成之前,主应用程序中的内容仍然存在”你需要添加更多细节来解释你所看到的内容,这对我来说听起来不合适。)
答案 1 :(得分:2)
我认为您要做的是在用户正确登录时启动新屏幕。只需在用户正确登录时启动新活动。 从以下方面获取帮助:
Intent i = new Intent(this,Login.class);
startActivityForResult(i, 1);
再次在MainActivity中使用 onActivityResult()方法接收结果,如果您想在主动作中执行某些操作。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==1){
Toast.makeText(this, "Pass", Toast.LENGTH_LONG).show();
}
else{
Toast.makeText(this, "Fail", Toast.LENGTH_LONG).show();
}
}
试试这个。
答案 2 :(得分:1)
您有几种选择。
也许更好的选择是使用两种不同的活动。当您开始第二个(主要活动)时,请在第一个(登录活动)中调用activity.finish()
。