【问题标题】:Null pointer exception when using FragmentStatePagerAdapter in Java for Android在 Java for Android 中使用 FragmentStatePagerAdapter 时出现空指针异常
【发布时间】:2014-07-07 14:13:02
【问题描述】:

在 IF 语句中,我使用从文本文件中获取的数据(使用 getTopics)。如果数据在那里,则意味着片段将在操作栏中具有相应的选项卡。但是,当我添加它时,我收到了一个空指针异常。这发生在要添加的第三个片段上。

最新的破解代码:

class MyAdapter extends FragmentStatePagerAdapter
{

public MyAdapter(FragmentManager fm) {
    super(fm);
}
@Override
public Fragment getItem(int i) {
    Fragment fragment=null;

    if(i==0) //This fragment always has a corresponding action bar tab.
    {
        fragment=new FragmentA();
    }

    addTabPosition = 2; //Variable used in getTopics().
    addTabTitle = "";
    GetTopics();
    if(i==1 && !(addTabTitle == ""))
    {
        fragment=new FragmentB();
    }
    addTabPosition = 3;
    addTabTitle = "";
    GetTopics();
    if(i==2 && !(addTabTitle == "")) //This is where the program breaks.
    {
        fragment=new FragmentC();
    }


    return fragment;
}

不会中断的旧代码:

    class MyAdapter extends FragmentStatePagerAdapter
{

public MyAdapter(FragmentManager fm) {
    super(fm);
}
@Override
public Fragment getItem(int i) {
    Fragment fragment=null;

    if(i==0)
    {
        fragment=new FragmentA();
    }

    if(i==1)
    {
        fragment=new FragmentB();
    }

    if(i==2)
    {
        fragment=new FragmentC();
    }
    return fragment;
}

【问题讨论】:

  • 你应该发布崩溃的错误日志
  • 另外,您是否打算在每次 getItem() 调用时运行 GetTopics() 两次,而不管参数是什么?我不知道你对这段代码的意图是什么,但看起来你已经把你想要的东西放在了语句之外的“if”语句中。
  • 我认为您应该在 if 条件中使用 nullsave 方式:"".equals(addTabTitle)

标签: java android android-fragments android-actionbar


【解决方案1】:

由于 i 是原始 int 并且永远不能为 null,因此问题一定出在 addTabTitle 上:

if(i==2 && !(addTabTitle == "")) 

addTabTitle 必须为 null 以解释异常。您将希望像这样执行空检查:

if(i==2 && !(addTabTitle != null && addTabTitle == "")) 

附:由于违反了 DRY 原则,您可能还希望稍微重构代码:

Don't repeat yourself

【讨论】:

    猜你喜欢
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多