首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >调用NullPointerException ()获取片段的视图时

调用NullPointerException ()获取片段的视图时
EN

Stack Overflow用户
提问于 2013-09-04 13:18:21
回答 2查看 3.8K关注 0票数 5

我正在尝试设置一个FragmentStatePagerAdapter,以便在我的一个类似于这个例子的片段上创建一个可滚动的选项卡接口。在我的活动的onCreate

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.base);

     setVersionString();
     setupActionBar();
     setupNavigationDrawer();
     setupFragments();
}

我将内容视图设置为以下布局(R.layout.base):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".BaseActivity" >

    <!-- The main content view -->
    <FrameLayout
        android:id="@+id/main_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <!-- The navigation drawer -->
    <ListView
        android:id="@+id/nav_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:background="#FFF" />

</android.support.v4.widget.DrawerLayout>

然后调用以下函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private void setupFragments() {
    // Check that the activity is using the correct layout
    if (findViewById(R.id.main_frame) != null) {
        // Initialize the first fragment
        MainFragment firstFrag = new MainFragment();

        // Pass any extras from an intent to the Fragment
        firstFrag.setArguments(getIntent().getExtras());

        // Add the first Fragment to the screen
        getSupportFragmentManager().beginTransaction()
            .add(R.id.main_frame, firstFrag).commit();

        tabsAdapter = firstFrag.getAdapter();
        Log.d("Base.LOG", "tabsAdapter = " + tabsAdapter);
        tabsAdapter.addTab(DummyFragment.class, null);
    }
}

在尝试将FragmentStatePagerAdapter设置为片段布局(R.layout.main)中视图的适配器时:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<android.support.v4.view.ViewPager
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main_page"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainFragment" >

    <android.support.v4.view.PagerTitleStrip
        android:id="@+id/pager_title_strip"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:background="#33b5e5"
        android:textColor="#fff"
        android:paddingTop="4dp"
        android:paddingBottom="4dp" />
</android.support.v4.view.ViewPager>

我的片段代码看起来是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private View mView;
private TabbedPagerAdapter mTabPageAdapter;
private ViewPager mTabPager;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    Log.d("Main.LOG", "onCreate called");
    mView = inflater.inflate(R.layout.main, container, false);
    Log.d("Main.LOG", "Layout inflated");
    setupTabs();
    Log.d("Main.LOG", "Tabs setup");

    return mView;
}

@Override
public void onResume() {
    super.onResume();
    Log.d("Main.LOG", "onResume called");
}

/** Set up the ViewPager and Adapter to handle the primary tabs */
private void setupTabs() {
    // Initialize the adapter
    mTabPageAdapter = new TabbedPagerAdapter(getActivity(),
            getActivity().getSupportFragmentManager());

    // Initialize the view pager
    mTabPager = (ViewPager) mView.findViewById(R.id.main_page);
    Log.d("Main.LOG", "mTabPager = " + mTabPager);
    Log.d("Main.LOG", "mTabPageAdapter = " + mTabPageAdapter);
    mTabPager.setAdapter(mTabPageAdapter);
}

/* Accessor for TabbedPagerAdapter */
public TabbedPagerAdapter getAdapter() {
    return mTabPageAdapter;
}

当我尝试添加带有NullPointerException的选项卡时,应用程序强制关闭。日志中的调试消息显示:

D/Base.LOG(27173):tabsAdapter = null

显示在任何片段的调试消息之前。在尝试访问它的任何视图或子类之前,如何确保布局是膨胀的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-05 07:51:54

据我的评论

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class MainFragment extends Fragment
{
    private MainInterface mInterface = null;
    //make sure to set the above somehow

    public interface MainInterface{
        public void onFragmentReady(.....);
    }

    ... //Do regular stuff here

    public void onResume()
    {
        //Do what you need to do in onResume
        if(mInterface != null)
        {
            mInteface.onFragmentReady();
        }
    }
}

这将使您能够知道片段何时准备好,然后可以执行getTabAdapter调用。

票数 2
EN

Stack Overflow用户

发布于 2013-09-04 13:44:20

在调用setContentView(...)之前,在活动的onCreate(...)方法中调用setupFragments(...)吗?

(如果是:):您要分配给活动的布局是否包含ViewPager?

My建议:由于您显然是在片段中使用ViewPager,所以在片段onCreateView(...)方法中进行ViewPager的初始化。

示例:

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

    // ASSUMING your layout.main contains the ViewPager
    View v = inflater.inflate(R.layout.main, container, false);

    ViewPager pager = (ViewPager) v.findViewById(R.id.pager);
    // and so on ...

    return v;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18623970

复制
相关文章
ChatGPT 的 AskYourPDF 插件所需链接如何获取?
目前 ChatGPT 主要有两款 PDF 对话插件,一个是 AskYourPDF 一个是 ChatWithPDF(需 ChatGPT Plus),他们都可以实现给一个公共的PDF 链接,然后进行持续对话,对读论文,阅读 PDF 格式的文档非常有用。
明明如月学长
2023/05/22
3.6K0
ChatGPT 的 AskYourPDF 插件所需链接如何获取?
TRICONEX 3624 更改或扩展所需的抽象接口
SIS支持与OPC UA标准相关的所有安全功能。它还为不同的用户和应用提供数据,并支持多个OPC UA端点(客户端或服务器),每个端点都有自己的证书。此外,SIS根据IP地址提供过滤访问,并可以检测对OPC UA身份验证的拒绝服务攻击。
用户10384942
2023/04/23
4640
TRICONEX 3624 更改或扩展所需的抽象接口
JIRA 链接 bitbucket 提示错误 Invalid OAuth credentials
Invalid OAuth credentials. Check Jira log for more information.
HoneyMoose
2021/07/19
4780
JIRA 链接 bitbucket 提示错误 Invalid OAuth credentials
JIRA安装过程中链接mysql的问题!
测试下我使用的是mysql7.5的版本,JIRA是6.3.6!这是版本引起的问题!
庞小明
2019/05/25
9550
wordpress更改固定链接后404
wordpress的固定链接对于博客的seo优化是非常重要的。因为有些默认设置并不怎么友好,所以我们可以自定义设置自己的想要的固定链接,比如自定义连接结构为:/%post_id%.html。但是往往我们更改之后会出现404页面,这是网站的伪静态出了问题。 下面是在不同环境下的不同解决方法。
SweetHunter
2020/05/10
2.1K0
WordPress更改固定链接诸项事宜
本文目录 前言 具体思路 更改固定链接 添加网站改版规则 规则选择说明 规则编写 后言 前言 记一次站点更改WordPress固定链接并提交百度站长平台链接改版。近日,由于看着 朴素 的链接不顺眼,
神无月
2018/06/22
1.8K0
WordPress更改固定链接404的解决办法
WordPress 网站建设中,固定链接设置是必不可少的,好的固定链接更美观、易用、利于用户分享和搜索引擎收录,需要注意的是,要使设置的固定链接生效的前提是你的网站环境支持伪静态。 常用的参数有 日期和名称型 /%year%/%monthnum%/%day%/%postname%/ 月份和名称型 /%year%/%monthnum%/%postname%/ 数字型 /archives/%post_id% 文章名 /%postname%/ ID+html 型 /%post_id%.html 很多站长在玩
沈唁
2018/05/24
7.5K0
Blazor 获取当前的 Url 链接
在 Blazor 获取当前页面所在的 URL 链接可以通过 NavigationManager 类辅助获取,也可以通过此方法获取当前域名等信息
林德熙
2022/08/12
3.6K0
获取url链接参数
/******封装获取url链接参数开始******/ getWxCode(name){ return decodeURIComponent((new RegExp('[?|&]' + name
〆 千寻、
2020/03/12
2.4K0
WordPress如何获取,分类的链接?
前些时在开发主题时遇到一个小问题,始终想不明白,就是如何在子分类中获取到父分类的链接。
Kit
2021/08/02
1.9K0
WordPress如何获取,分类的链接?
Photos存储、获取、更改照片详解
前言: 相册保存到系统相册中,通常有三种办法: UIImageWriteToSavedPhotosAlbum() 方法保存 是使用 Photos 框架来实现。 ALAssetsLibrary 在iOS9.0之后就被标记为过时方法,苹果建议使用Photos框架代替 问:UIImageWriteToSavedPhotosAlbum()保存图片很简单,但为什么还要用Photos? 答: 1、Photos可以为相册相片做标识,方便保存后取出它们 2、Photos有同步操作,可以同时保存多张图片 3、可以存储
Dwyane
2018/05/22
2.1K0
wordpress更改固定链接后旧链接301跳转当前固定连接
为避免之前文章内的链接和搜索引擎收录的链接失效,我们再可以将之前的链接301跳转到新链接
AlexTao
2019/12/12
1.2K0
[海盗湾] 磁力链接批量获取
这个工具的用途就是批量获取海盗湾的磁力链接,例如:https://thepiratebay.cr/search/tokyo%20hot
obaby
2023/02/24
2.6K0
获取指定类型的设备,符号链接
头文件:DeviceInterfaceClassGUID.h //keyBoard DEFINE_GUID(GUID_CLASS_KEYBOARD, 0x884b96c3, 0x56ef, 0x11d1, 0xbc, 0x8c, 0x00, 0xa0, 0xc9, 0x14, 0x05, 0xdd); //Mouse DEFINE_GUID(GUID_CLASS_MOUSE, 0x378de44c, 0x56ef, 0x11d1, 0xbc, 0x8c, 0x00, 0xa0, 0xc9, 0x
obaby
2023/02/28
1.1K0
获取指定类型的设备,符号链接
WordPress获取所有文章链接
填一下以前文章中提到的WordPress获取所有文章链接的坑。 使用方法 在以下的PHP代码中选择一个复制 新建GetId.php文件,将代全部码粘贴 将GetId.php文件上传至网站根目录 通过浏览器访问该文件即可(例如:www.qcgzxw.cn/GetId.php) 显示内容即为所有已发布的文章链接,复制后保存至本地即可(文件使用完毕后记得删了) PHP代码 1.获取所有已发布文章(ID) 文章链接:https://www.qcgzxw.cn/2579.html 红色字体即为前缀,绿色即为后缀 <
神无月
2018/06/25
4.5K2
Selenium - 获取页面跳转之后的链接
今天在使用Flask+Selenium开发的时候遇到了一个天坑,这个页面会自动跳转到新页面,但是我使用driver.current_url无法获取到最新的页面url,获取到的还是driver.get(url)的
用砖头敲代码
2022/11/22
3.2K0
WordPress获取所有文章链接
使用方法 在以下的PHP代码中选择一个复制 新建GetId.php文件,将代全部码粘贴 将GetId.php文件上传至网站根目录 通过浏览器访问该文件即可(例如:www.qcgzxw.cn/GetId
神无月
2018/05/11
2.9K2
WordPress获取所有文章链接
JIRA笔记(一):安装部署JIRA
(一)     说明 说明JIRA的安装及破解。 操作系统:WIN 10 数据库:Oracle 12C R2(这个版本的jira,atlassian建议的是 12C R1,不过R2也能用,其他版本不清楚) Jira:7.10.1 数据中心 JDK:1.8(atlassian建议的是1.8) 下面这个地址,有jira支持平台的相关信息(这里有个说明,如果使用Windows或Linux安装程序,不需要安装JDK,因为jira安装程序包含了JRE。这个没试过,因为JDK环境很多应用都能用上,所以操作系统一安装就配
free赖权华
2018/07/04
8.5K0
WordPress怎么获取分类链接?
WordPress怎么获取分类链接?某些模板主题首页多以分类列表的形式展示内容,一般需要在适当位置添加某分类归档页面链接的按钮,下面的代码可以帮你实现。
主机教程网2bcd.com
2022/11/02
8960
JIRA安装
mkdir –p /home/jira mkdir –p /home/jira_home 不能用相同目录,必须两个目录
后端云
2018/10/24
1.7K0

相似问题

获取JIRA REST中的链接问题

14

使用Python从Jira获取链接的问题

21

通过jira-python获取发布的Epic链接

17

如何获取Jira更改的每周报告

14

链接JIRA和Bitbucket

310
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文