改变当前活动的布局

时间:2014-03-19 20:44:05

标签: android android-layout findviewbyid

FrameLayout content = (FrameLayout) findViewById(android.R.id.content); 

这给了我一个错误

error: cannot find symbol
    FrameLayout rootLayout = (FrameLayout)findViewById(android.R.id.content);
                                          ^
symbol:   method findViewById(int)

我已经导入了所需的R包

4 个答案:

答案 0 :(得分:1)

尝试:FrameLayout content =(FrameLayout)findViewById(R.id.content);

如果这不起作用,请删除yourPackage.R的导入并点击“修复导入”按钮,不确定您执行的导入是否正确。我总是有两种不同的选择。

答案 1 :(得分:1)

您似乎正在尝试从其他班级访问当前Activity的布局。不要试图在不同的班级中找到FrameLayout,而是将FrameLayout的引用保存在Activity内,并将FrameLayout传递给您的单独班级(班级)你目前在哪里看到这个问题。)

E.g。

活动类:

...
OtherObject myOtherObject = new OtherObject();
FrameLayout frameLayout = (FrameLayout) findViewById(R.id.my_frame_layout);
myOtherObject.doStuffWithFrameLayout(frameLayout);
...

OtherObject类:

...
public void doStuffWithFrameLayout(FrameLayout frameLayout) {
    //You can use the FrameLayout here and do stuff with it.

    //You will likely also want to pass in a Context object if you want to
    //create a LayoutInflater or do other Context-dependent stuff
}
...

答案 2 :(得分:0)

您可以再次致电setContentView(),但请注意这会使您的所有视图参考无效,因此请务必再次初始化它们。

这几乎没有理由这样做,所以我建议你研究使用Fragments,然后换掉片段。

答案 3 :(得分:0)

要使用android.R.id.content,您必须导入android.R,而不是yourAppPackage.R。

要在一个活动中使用多个布局,您必须使用ViewFlipper或ViewAnimator(或多次调用setContentView,但如果您有大量布局,则资源非常昂贵)。