使用上下文类膨胀布局

Posted

技术标签:

【中文标题】使用上下文类膨胀布局【英文标题】:Inflate layout with context class 【发布时间】:2018-03-14 16:46:44 【问题描述】:

我有两个活动,有两个对应的布局:

MainActivity.java -> content_main.xml

SecondActivity.java -> content_secondclass.xml

我的 MainActivity 膨胀 content_secondclass.xml 没有问题:

RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.content_main);
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.content_secondclass, null);
mainLayout.removeAllViews();
mainLayout.addView(layout);

我如何给这个通货膨胀SecondActivity.java 的背景?我不想启动另一个 Intent,因为它会在新窗口中打开,并且我使用的是 Navigation Drawer 样式的应用程序。我希望在扩展 content_secondclass.xml 时调用 SecondActivity,但现在它只是在扩展 content_secondclass 而不调用 SecondActivity.java。

我的 content_secondclass.xml 已经有了“.SecondActivity”的tools:context 标签

希望我能理解我的意思。非常感谢您在此问题上的时间和帮助。

【问题讨论】:

在谷歌中寻找一种叫做“片段”的东西。 这不是一个活动如何膨胀 xml 布局,而是在 oncreate 上使用 setcontentview 【参考方案1】:

我有点理解你的问题。正如我的猜测,您希望在您的第一个(主)布局内的第二个布局(视图)中进行一些 java 工作,而无需打开另一个活动。

使用片段的最佳方法。使用片段,您将拥有灵活的 UI,并且每个片段在一个活动中都有相应的 Java 控制器。如果您是 android 新手,请阅读片段教程。关于片段的一些基础知识click here

最好的问候

【讨论】:

感谢两位的解答,一定会看碎片的。【参考方案2】:

保存导航抽屉的主布局应该是框架布局并创建框架布局对象

  FragmentTransaction transaction = getSupportFragmentManager()
                .beginTransaction();
        transaction.replace(R.id.frame_container, fragment);
        transaction.addToBackStack(tag);
        transaction.commit();

这里的fragment是你创建的fragment的对象

【讨论】:

以上是关于使用上下文类膨胀布局的主要内容,如果未能解决你的问题,请参考以下文章

使用 GCC/CLANG 追踪代码膨胀的工具

在android的片段中设置列表视图适配器

使用 NLog 事件上下文布局渲染器以毫秒精度记录日期时间

膨胀类 com.google.android.material.slider.Slider 时出错

如何设置Button以更改为新布局?

膨胀类 RecyclerView 时出错