选项卡布局实现上的 NullPointerException

2023-12-29

我已经实现了选项卡布局,但我的应用程序未启动。我在这一行得到 NullPointerException:

actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

我认为一切都做得很好。我找不到我的错误。

主要活动:

import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;

import com.msh.numeral_system_converter_adapter.TabsPagerAdapter;

public class MainActivity extends FragmentActivity implements
    ActionBar.TabListener {

private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;

// Tab titles
private String[] tabs = { "Converter", "Calculator"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Initilization
    viewPager = (ViewPager) findViewById(R.id.pager);
    actionBar = getActionBar();
    mAdapter = new TabsPagerAdapter(getSupportFragmentManager());

    viewPager.setAdapter(mAdapter);
    //actionBar.setHomeButtonEnabled(false);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    // Adding Tabs
    for (String tab_name : tabs) {
        actionBar.addTab(actionBar.newTab().setText(tab_name)
                .setTabListener(this));
    }

    /**
     * on swiping the viewpager make respective tab selected
     * */
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageSelected(int position) {
            // on changing the page
            // make respected tab selected
            actionBar.setSelectedNavigationItem(position);
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
        }
    });
}

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    // on tab selected
    // show respected fragment view
    viewPager.setCurrentItem(tab.getPosition());
}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}

}

日志档案:

04-11 17:44:02.553    1545-1545/com.msh.numeral_system_converter E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.msh.numeral_system_converter, PID: 1545
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.msh.numeral_system_converter/com.msh.numeral_system_converter.MainActivity}: java.lang.NullPointerException
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
        at android.app.ActivityThread.access$800(ActivityThread.java:135)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5017)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
        at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
            at com.msh.numeral_system_converter.MainActivity.onCreate(MainActivity.java:34)
            at android.app.Activity.performCreate(Activity.java:5231)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)             at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)

getActionBar()可以返回null如果你的窗户没有ActionBar。就像如果你选择了Theme.NoTitleBar样式作为活动/应用程序主题。

请改用此代码(从那里挑选的 https://stackoverflow.com/questions/10031180/getactionbar-returns-null):

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

// The Action Bar is a window feature. The feature must be requested
// before setting a content view. Normally this is set automatically
// by your Activity's theme in your manifest. The provided system
// theme Theme.WithActionBar enables this for you. Use it as you would
// use Theme.NoTitleBar. You can add an Action Bar to your own themes
// by adding the element <item name="android:windowActionBar">true</item>
// to your style definition.
    getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
    setContentView(R.layout.main);

// experiment with the ActionBar 
    ActionBar actionBar = getActionBar();
}

This link https://stackoverflow.com/questions/6867076/getactionbar-returns-null也可能有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

选项卡布局实现上的 NullPointerException 的相关文章

随机推荐

  • 使用 jquery 更改链接中的 html 文本

    这里有一个简单的问题 有没有办法更改文本 单击此处 a href nothing click here a 在这个链接中 Richard 你必须使用jquery的text 函数 https api jquery com text text
  • 应为使用 GetDIBits 函数从 HBITMAP 接收的 DIB 数据分配多少内存?

    应为使用 GetDIBits 函数从 HBITMAP 接收的 DIB 数据分配多少内存 MSDN中对GetDIBits函数的描述如下 int GetDIBits in HDC hdc in HBITMAP hbmp in UINT uSta
  • 如何使用 jQuery 选择文本节点?

    我想获取一个元素的所有后代文本节点 作为 jQuery 集合 最好的方法是什么 jQuery 没有为此提供方便的函数 你需要结合contents 它将只给出子节点 但包括文本节点 其中find 它给出所有后代元素 但不给出文本节点 这是我想
  • $(document).keydown 不起作用

    Edit 感谢大家的帮助 但我将我的问题跟踪为代替 请投票关闭 知道为什么吗 function document keydown function evt alert Hello 不管用 我在用Firefox 3 6 13在 Ubuntu
  • 什么时候需要 pygame.init() ?

    我正在学习 pygame 在绝大多数教程中据说应该运行pygame init 在做任何事情之前 我正在做一个特定的教程并像一个人那样输入代码 并注意到在一个又一个的示例中没有pygame init 并且没有任何模块的其他显式初始化 例如 以
  • 使用角度过滤来过滤角度材料表中的特定列?

    我在用垫子表 https run stackblitz com api angular v1 file app 2Ftable filtering example ts 它有一个过滤器 工作正常 针对以下数据进行过滤 所有列 const E
  • 每个用户表都应该有聚集索引吗?

    最近 我在数据库中发现了几个没有定义聚集索引的表 但定义了非聚集索引 因此它们位于 HEAP 上 经过分析 我发现 select 语句对非聚集索引中定义的列使用过滤器 这些表上没有聚集索引会影响性能吗 很难比 SQL Server MVP
  • Matplotlib event_handling 线选择器

    This example http matplotlib org examples event handling legend picking html可以单击图例从而更改绘图 我想做类似的事情 但不是通过单击图例 而是通过单击图中的线 我
  • Android 检查 SharedPreferences 的值类型

    我有一些键值对SharedPreferences 有整数 浮点数 字符串等 有没有办法检查给定的键是否属于特定类型 EDIT 我研究了文档和可用的方法 可悲的是 在我看来 我需要使其成为一种 肮脏 的方式 只需尝试每个 get 方法 直到我
  • Autofac 无法解析模块中的依赖关系

    我是 AutoFac 的新手 我认为应该是一个简单的场景 var builder new ContainerBuilder builder Register c gt new EventLogLogger As
  • Selenium WebDriver JS - 显式等待

    我正在使用 selenium webdriverjs 我想等待显示某个元素 我已为其创建了显式等待 如下所示 它工作得很好 var displayed false driver wait function driver findElemen
  • 圆形 LinearGradient 上的 ContextMenu 在 SwiftUI 中产生锐边

    我有以下观点 struct ContentView View var body some View LinearGradient gradient Gradient colors blue red startPoint topTrailin
  • Python + BeautifulSoup:如何从基于文本的 HTML 中获取包装器?

    想要获得关键文本的包装 例如 在 HTML 中 div class target chicken div div class not target apple div 并根据文本 鸡 想要返回 div class target chicke
  • 当removeAll()时TreeSet中出现NullPointerException

    从文档Collection removeAll https docs oracle com javase 7 docs api java util Collection html removeAll java util Collection
  • jQuery 1.9 .live() 不是一个函数

    我最近将 jQuery 从 1 8 更新到 2 1 我突然发现 live 停止工作 我收到错误TypeError live is not a function 有什么方法可以代替 live jQuery live 从1 9版本开始已被删除
  • 如何将一组函数存储到 Fortran 数组中

    我们知道函数名可以作为参数被其他子程序传入 传出 我想知道我们是否有任何技巧可以将函数列表保存到数组中 该数组将被传入和传出以进行处理 例如 在某个地方我们设置任何数组 type Idonotknow Farray N 然后设置值 Farr
  • plotly.js 轴“锚点”属性

    我正在尝试自定义一些子图 但我不明白轴 锚点 属性的含义 使用此属性的一些示例如下 https plot ly javascript subplots https plot ly javascript subplots 什么是yaxis2
  • 如何在新的 Google Analytics 代码中放置自定义变量

    我想将自定义变量放入 Google Analytics 但我对语法有点困惑 这是 Google 让我在我的网站上放置的内容 function i s o g r a m i GoogleAnalyticsObject r i r i r f
  • 如何从 Google 的 api 获取更大的 favicon?

    是否可以从 Google 的 api 或其他地方获取更大版本的 favicon 这是网址 http www google com s2 favicons domain google com http www google com s2 fa
  • 选项卡布局实现上的 NullPointerException

    我已经实现了选项卡布局 但我的应用程序未启动 我在这一行得到 NullPointerException actionBar setNavigationMode ActionBar NAVIGATION MODE TABS 我认为一切都做得很