如何像 setContentView 一样设置 FrameLayout 的内容

Pey*_*man 2 layout android

我想要像 setContentView 这样的东西,但是对于我当前布局中的 FrameLayout 意味着我的 main_activity 布局中有一些控件,其中一个是 pageHolder,它是一个 FrameLayout。我在 res/layout 中添加了一个 android 布局,它也是 FrameLayout,称为 page1,另一个称为 page2。我想在应用程序运行时将 pageHolder 的内容更改为 page1 或 page2 的内容。

我执行以下代码,但它给了我错误:

    FrameLayout pageHolder = (FrameLayout)findViewById(R.id.pageHolder);

    FrameLayout page1 = (FrameLayout)findViewById(R.layout.page1);

    pageHolder.removeAllViews();
    pageHolder.addView(page1);
Run Code Online (Sandbox Code Playgroud)

它说 page1 为空,我自己检查过,它是空的。你能帮我吗?

Dam*_*ski 5

在我看来,您应该使用LayoutInflater来增加 page1 布局。它应该是这样的:

LayoutInflater inflater = (LayoutInflater)context.getSystemService
  (Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.page1, null);
Run Code Online (Sandbox Code Playgroud)

  • 而不是 context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) 你可以只写 getLayoutInflater() (3认同)