切换视图/布局

时间:2010-12-14 20:45:33

标签: android layout view

好吧,我还有另一个问题,我似乎无法找到解决方案......当然,我有一个应用程序在启动时加载main.xml文件。在它有几个按钮,我希望按钮将我带到一个不同的XML文件。我刚刚使用了setContentView(R.layout.newlayout.xml)方法,它运行得很好。之后出现问题。如果我引用新布局中的任何按钮或其他对象,则应用程序甚至无法在模拟器出错和关闭之前完成加载。但是,如果我将对象的所有引用都删除,那么应用程序运行正常。我可以导航 TO 新布局,但他们的按钮无法执行任何操作。我是否需要为每个布局创建单独的Java文件?或者我做错了吗?我正努力尽可能具体......我想你可以说我需要在我的应用程序中拥有不同的“页面”,就像网站一样。

3 个答案:

答案 0 :(得分:1)

我认为你要做的事情最好用多个java文件解决,每个文件定义它自己的android Activity。

虽然在单个活动中可以有多个布局/视图,但这通常会使代码更复杂,并且将来更难以读取/调试。通过将每个“屏幕”放在自己的文件中,管理您需要处理的所有不同视图会更容易一些。

答案 1 :(得分:1)

按钮和视图只能引用当前SetContentView()文件中提到的那些..

你可以通过创建一个按钮并初始化为R.id来测试这个...而不设置内容视图..你将获得一个力量关闭..

所以,如果你改变了XML文件,你就会再次初始化东西......

答案 2 :(得分:0)

好吧,对于那里有同样问题而且没有想出怎么做的人,就像我在ylebre的评论中所说,我的同事和我终于发现了怎么做它。首先,我们添加了

implements OnClickListener

后到班级

extends Activity

然后,我们创建了一个新的java文件,并在文件的开头名为

setContentView(R.layout.newlayout);

而不是主要。然后,我们按下如下按钮:

Button button1 = (Button) findViewById(R.id.button01;
button1.setOnClickListener(this);

然后在代码中:

public void onClick(View v) {
        switch(v.getId()) {
            case R.id.button01:
                startActivity(new Intent(this, NEWJAVAFILE.class));
                break;

        }
    }

就是这样!我们只是将该代码复制并粘贴到NEWJAVAFILE中,更改了名称等等,我们能够自由地来回导航。正如ylebre所说,新活动的所有代码都在NEWJAVAFILE.java中。 OH,不要忘记将java文件的名称添加到标签内的清单中:

<activity android:name=".NEWJAVAFILE">        
    </activity>
现在这一切看起来都很简单!