首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Android中添加片段

如何在Android中添加片段
EN

Stack Overflow用户
提问于 2017-07-14 05:54:09
回答 4查看 99关注 0票数 0

我试图添加一个包含TabLayout视图的片段,但是我一直收到错误:

代码语言:javascript
运行
复制
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.support.design.widget.TabLayout$Tab android.support.design.widget.TabLayout.newTab()' on a null object reference
                                                                at ca.rev.revcore.MainActivity.onCreate(MainActivity.java:76)

这就是我要添加的布局:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.TabLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rev_tablayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:theme="@style/RevStyle_PlaceNewBagBttn">

    <android.support.design.widget.TabItem
        android:id="@+id/tabItem"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Tab1" />

</android.support.design.widget.TabLayout>

我就是这么加进去的:

代码语言:javascript
运行
复制
 TabLayout tabLayout = (TabLayout) findViewById(R.id.rev_tablayout);

 tabLayout.addTab(tabLayout.newTab().setText("Upload"));
 tabLayout.addTab(tabLayout.newTab().setText("Pics"));
 tabLayout.addTab(tabLayout.newTab().setText("Vids"));
 tabLayout.addTab(tabLayout.newTab().setText("Papers"));

 tabLayout.getTabAt(0).setIcon(R.drawable.ic_publish_black_24dp);
 tabLayout.getTabAt(1).setIcon(R.drawable.ic_menu_camera);
 tabLayout.getTabAt(2).setIcon(R.drawable.ic_videocam_black_24dp);
 tabLayout.getTabAt(3).setIcon(R.drawable.ic_airplay_black_24dp);

我错过了什么?

维伦湿透了我的身体。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-07-14 05:56:59

如果你在使用片段。变化

代码语言:javascript
运行
复制
TabLayout tabLayout = (TabLayout) findViewById(R.id.rev_tablayout);

代码语言:javascript
运行
复制
TabLayout tabLayout = (TabLayout) view.findViewById(R.id.rev_tablayout);

view是在onCreateView()方法中膨胀布局文件和返回视图的对象。

票数 3
EN

Stack Overflow用户

发布于 2017-07-14 06:00:13

如果您正在使用片段,则使用。在oncreate视图中绑定这样的控件,在该视图中膨胀布局

代码语言:javascript
运行
复制
View rootView = inflater.inflate(R.layout.fragment_, container, false);
TabLayout tabLayout = (TabLayout) rootView.findViewById(R.id.tablayout);
票数 1
EN

Stack Overflow用户

发布于 2017-07-14 06:06:49

在片段中覆盖onCreateView()方法,并使用LayoutInflater类对象并通过传递将嵌入框架的活动的ViewGroup论证来膨胀片段布局。

代码语言:javascript
运行
复制
TabLayout tabLayout = (TabLayout) your_View_OBJ.findViewById(R.id.rev_tablayout);

Demo

代码语言:javascript
运行
复制
 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.your_xml_name, container, false);
    TabLayout tabLayout = (TabLayout)rootView.findViewById(R.id.rev_tablayout);
    return rootView;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45095613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档