Android:如何拥有两个独立的布局

时间:2011-04-13 10:44:41

标签: android layout android-layout

当我在这里搜索时有很多布局问题,但我找不到解决这个问题的方法 - 而且可能是因为我的方法不对,或者可能用错误的术语来描述我的意思试图实现。如果在其他地方得到解答,我会事先道歉,但会很感激一些指示。

我想要做的是有一个登录任务的屏幕,然后一旦登录我转到另一个屏幕做一些其他的东西(这个屏幕将有一个完全不同的布局)。

我的问题是:我可以有两个单独的布局(即: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()?

我希望它的一些简单我做错了,我想尝试从各种网站和我拥有的两本教科书中汲取创意,但似乎没有任何工作。

非常感谢任何帮助或想法

3 个答案:

答案 0 :(得分:3)

执行此操作的正确方法是让两个活动MainActivityLoginActivity各自拥有自己的布局。如果你不采取这种方法,你将进入后退地狱。

(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()