【问题标题】:having null pointer exception(not always) when started using action bar sherlock library开始使用操作栏 sherlock 库时出现空指针异常(并非总是如此)
【发布时间】:2013-10-13 00:50:55
【问题描述】:

所以我在我的应用程序中为操作栏使用操作栏 sherlock 库。即使我不确定问题是否因此而发生,但我觉得它是由于 abs 造成的?但奇怪的是,当我重新启动手机和 ADT 并删除应用程序然后清理项目并运行项目时它再次工作。但是当它工作正常时,它可能会突然停止工作。我需要解决这个问题。谢谢百万!

10-12 23:40:51.905: I/dalvikvm(1528): 找不到方法 com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout.onHoverEvent, 从方法引用 com.actionbarsherlock.internal.widget.ActionBarContainer.onHoverEvent 10-12 23:40:51.905: W/dalvikvm(1528): VFY: 无法解析虚拟 方法4266: Lcom/actionbarsherlock/internal/nineoldandroids/widget/NineFrameLayout;.onHoverEvent (Landroid/view/MotionEvent;)Z 10-12 23:40:51.905: D/dalvikvm(1528): VFY:在 0x0000 10-12 23:40:51.905 处替换操作码 0x6f: D/dalvikvm(1528): VFY: 死码 0x0003-0004 in Lcom/actionbarsherlock/internal/widget/ActionBarContainer;.onHoverEvent (Landroid/view/MotionEvent;)Z 10-12 23:40:51.915: I/dalvikvm(1528): 找不到方法 android.widget.FrameLayout.getAlpha,引用 从方法 com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout.getAlpha 10-12 23:40:51.915: W/dalvikvm(1528): VFY: 无法解析虚拟 方法 3019:Landroid/widget/FrameLayout;.getAlpha ()F 10-12 23:40:51.915: D/dalvikvm(1528): VFY: 在 0x000b 处替换操作码 0x6f 10-12 23:40:51.915: D/dalvikvm(1528): VFY: 死码 0x000e-000f in Lcom/actionbarsherlock/internal/nineoldandroids/widget/NineFrameLayout;.getAlpha ()F 10-12 23:40:51.915: I/dalvikvm(1528): 找不到方法 android.widget.FrameLayout.getTranslationY,引用自方法 com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout.getTranslationY 10-12 23:40:51.915: W/dalvikvm(1528): VFY: 无法解析虚拟 方法 3020:Landroid/widget/FrameLayout;.getTranslationY ()F 10-12 23:40:51.915: D/dalvikvm(1528): VFY: 在 0x000b 处替换操作码 0x6f 10-12 23:40:51.915: D/dalvikvm(1528): VFY: 死码 0x000e-000f in Lcom/actionbarsherlock/internal/nineoldandroids/widget/NineFrameLayout;.getTranslationY ()F 10-12 23:40:51.915: I/dalvikvm(1528): 找不到方法 android.widget.FrameLayout.setAlpha,引用自方法 com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout.setAlpha 10-12 23:40:51.915: W/dalvikvm(1528): VFY: 无法解析虚拟 方法 3023:Landroid/widget/FrameLayout;.setAlpha (F)V 10-12 23:40:51.915: D/dalvikvm(1528): VFY: 在 0x000a 处替换操作码 0x6f 10-12 23:40:51.915: D/dalvikvm(1528): VFY: 死代码 0x000d-000d in Lcom/actionbarsherlock/internal/nineoldandroids/widget/NineFrameLayout;.setAlpha (F)V 10-12 23:40:51.915: I/dalvikvm(1528): 找不到方法 android.widget.FrameLayout.setTranslationY,引用自方法 com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout.setTranslationY 10-12 23:40:51.915: W/dalvikvm(1528): VFY: 无法解析虚拟 方法 3030:Landroid/widget/FrameLayout;.setTranslationY (F)V 10-12 23:40:51.915: D/dalvikvm(1528): VFY: 在 0x000a 处替换操作码 0x6f 10-12 23:40:51.915: D/dalvikvm(1528): VFY: 死代码 0x000d-000d in Lcom/actionbarsherlock/internal/nineoldandroids/widget/NineFrameLayout;.setTranslationY (F)V 10-12 23:40:51.925: I/dalvikvm(1528): 找不到方法 android.content.pm.PackageManager.getActivityLogo,引用自 com.actionbarsherlock.internal.widget.ActionBarView 方法。 10-12 23:40:51.925: W/dalvikvm(1528): VFY: 无法解析虚拟方法 300: Landroid/content/pm/PackageManager;.getActivityLogo (Landroid/content/ComponentName;)Landroid/graphics/drawable/Drawable; 10-12 23:40:51.925: D/dalvikvm(1528): VFY: 将操作码 0x6e 替换为 0x01d1 10-12 23:40:51.925: I/dalvikvm(1528): 找不到方法 android.content.pm.ApplicationInfo.loadLogo,引用自方法 com.actionbarsherlock.internal.widget.ActionBarView。 10-12 23:40:51.925: W/dalvikvm(1528): VFY: 无法解析虚拟方法 296:Landroid/content/pm/ApplicationInfo;.loadLogo (Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable; 10-12 23:40:51.925: D/dalvikvm(1528): VFY: 将操作码 0x6e 替换为 0x01df 10-12 23:40:51.925: D/dalvikvm(1528): VFY: 死代码 Lcom/actionbarsherlock/internal/widget/ActionBarView 中的 0x01d4-01d8;。 (Landroid/content/Context;Landroid/util/AttributeSet;)V 10-12 23:40:51.925: D/dalvikvm(1528): VFY: 死码 0x01e2-01e8 in Lcom/actionbarsherlock/internal/widget/ActionBarView;. (Landroid/content/Context;Landroid/util/AttributeSet;)V 10-12 23:40:51.955: I/dalvikvm(1528): 找不到方法 android.view.ViewGroup.getAlpha,引用自方法 com.actionbarsherlock.internal.nineoldandroids.view.NineViewGroup.getAlpha 10-12 23:40:51.955: W/dalvikvm(1528): VFY: 无法解析虚拟 方法 2789:Landroid/view/ViewGroup;.getAlpha ()F 10-12 23:40:51.955: D/dalvikvm(1528):VFY:在 0x000b 10-12 处替换操作码 0x6f 23:40:51.955: D/dalvikvm(1528): VFY: 死码 0x000e-000f in Lcom/actionbarsherlock/internal/nineoldandroids/view/NineViewGroup;.getAlpha ()F 10-12 23:40:51.955: I/dalvikvm(1528): 找不到方法 android.view.ViewGroup.getTranslationX,引用自方法 com.actionbarsherlock.internal.nineoldandroids.view.NineViewGroup.getTranslationX 10-12 23:40:51.955: W/dalvikvm(1528): VFY: 无法解析虚拟 方法 2794:Landroid/view/ViewGroup;.getTranslationX ()F 10-12 23:40:51.955: D/dalvikvm(1528): VFY: 在 0x000b 处替换操作码 0x6f 10-12 23:40:51.955: D/dalvikvm(1528): VFY: 死代码 0x000e-000f in Lcom/actionbarsherlock/internal/nineoldandroids/view/NineViewGroup;.getTranslationX ()F 10-12 23:40:51.955: I/dalvikvm(1528): 找不到方法 android.view.ViewGroup.getTranslationY,引用自方法 com.actionbarsherlock.internal.nineoldandroids.view.NineViewGroup.getTranslationY 10-12 23:40:51.955: W/dalvikvm(1528): VFY: 无法解析虚拟 方法 2795:Landroid/view/ViewGroup;.getTranslationY ()F 10-12 23:40:51.955: D/dalvikvm(1528): VFY: 在 0x000b 处替换操作码 0x6f 10-12 23:40:51.955: D/dalvikvm(1528): VFY: 死代码 0x000e-000f in Lcom/actionbarsherlock/internal/nineoldandroids/view/NineViewGroup;.getTranslationY ()F 10-12 23:40:51.955: I/dalvikvm(1528): 找不到方法 android.view.ViewGroup.setAlpha,引用自方法 com.actionbarsherlock.internal.nineoldandroids.view.NineViewGroup.setAlpha 10-12 23:40:51.955: W/dalvikvm(1528): VFY: 无法解析虚拟 方法 2810:Landroid/view/ViewGroup;.setAlpha (F)V 10-12 23:40:51.955: D/dalvikvm(1528): VFY: 在 0x000a 处替换操作码 0x6f 10-12 23:40:51.955: D/dalvikvm(1528): VFY: 死码 0x000d-000d in Lcom/actionbarsherlock/internal/nineoldandroids/view/NineViewGroup;.setAlpha (F)V 10-12 23:40:51.955: I/dalvikvm(1528): 找不到方法 android.view.ViewGroup.setTranslationX,引用自方法 com.actionbarsherlock.internal.nineoldandroids.view.NineViewGroup.setTranslationX 10-12 23:40:51.955: W/dalvikvm(1528): VFY: 无法解析虚拟 方法 2814:Landroid/view/ViewGroup;.setTranslationX (F)V 10-12 23:40:51.955: D/dalvikvm(1528): VFY: 在 0x000a 处替换操作码 0x6f 10-12 23:40:51.955: D/dalvikvm(1528): VFY: 死码 0x000d-000d in Lcom/actionbarsherlock/internal/nineoldandroids/view/NineViewGroup;.setTranslationX (F)V 10-12 23:40:51.955: I/dalvikvm(1528): 找不到方法 android.view.ViewGroup.setTranslationY,引用自方法 com.actionbarsherlock.internal.nineoldandroids.view.NineViewGroup.setTranslationY 10-12 23:40:51.955: W/dalvikvm(1528): VFY: 无法解析虚拟 方法 2815:Landroid/view/ViewGroup;.setTranslationY (F)V 10-12 23:40:51.955: D/dalvikvm(1528): VFY: 在 0x000a 处替换操作码 0x6f 10-12 23:40:51.955: D/dalvikvm(1528): VFY: 死码 0x000d-000d in Lcom/actionbarsherlock/internal/nineoldandroids/view/NineViewGroup;.setTranslationY (F)V 10-12 23:40:51.985: D/dalvikvm(1528): GC_EXTERNAL_ALLOC 释放 1437 个对象 / 98064 字节在 28​​ms 10-12 23:40:52.285: I/dalvikvm(1528): 找不到方法 com.actionbarsherlock.internal.widget.ActionBarView$HomeView.onHoverEvent, 从方法引用 com.actionbarsherlock.internal.widget.ActionBarView$HomeView.dispatchHoverEvent 10-12 23:40:52.285: W/dalvikvm(1528): VFY: 无法解析虚拟 方法5127: Lcom/actionbarsherlock/internal/widget/ActionBarView$HomeView;.onHoverEvent (Landroid/view/MotionEvent;)Z 10-12 23:40:52.285: D/dalvikvm(1528): VFY:在 0x0000 10-12 23:40:52.285 处替换操作码 0x6e: D/dalvikvm(1528): VFY: 死码 0x0003-0004 in Lcom/actionbarsherlock/internal/widget/ActionBarView$HomeView;.dispatchHoverEvent (Landroid/view/MotionEvent;)Z 10-12 23:40:52.285: I/dalvikvm(1528): 找不到方法 android.widget.FrameLayout.onPopulateAccessibilityEvent,引用 从方法 com.actionbarsherlock.internal.widget.ActionBarView$HomeView.onPopulateAccessibilityEvent 10-12 23:40:52.285: W/dalvikvm(1528): VFY: 无法解析虚拟 方法 3022:Landroid/widget/FrameLayout;.onPopulateAccessibilityEvent (Landroid/view/accessibility/AccessibilityEvent;)V 10-12 23:40:52.285: D/dalvikvm(1528): VFY: 在 0x0006 10-12 处替换操作码 0x6f 23:40:52.345:D/AndroidRuntime(1528):关闭 VM 10-12 23:40:52.345: W/dalvikvm(1528): threadid=1: 线程退出 未捕获的异常(组=0x400259f8)10-12 23:40:52.355: E/AndroidRuntime(1528): 致命例外: 主 10-12 23:40:52.355: E/AndroidRuntime(1528): java.lang.RuntimeException: 无法启动 活动 ComponentInfo{com.id11313982.freejokesapp/com.id11313982.freejokesapp.activities.MainActivity}:java.lang.NullPointerException 10-12 23:40:52.355: E/AndroidRuntime(1528):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2787) 10-12 23:40:52.355: E/AndroidRuntime(1528): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803) 10-12 23:40:52.355: E/AndroidRuntime(1528): 在 android.app.ActivityThread.access$2300(ActivityThread.java:135) 10-12 23:40:52.355:E/AndroidRuntime(1528):在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2136) 10-12 23:40:52.355: E/AndroidRuntime(1528): 在 android.os.Handler.dispatchMessage(Handler.java:99) 10-12 23:40:52.355:E/AndroidRuntime(1528):在 android.os.Looper.loop(Looper.java:145) 10-12 23:40:52.355: E/AndroidRuntime(1528):在 android.app.ActivityThread.main(ActivityThread.java:4937) 10-12 23:40:52.355:E/AndroidRuntime(1528):在 java.lang.reflect.Method.invokeNative(Native Method) 10-12 23:40:52.355:E/AndroidRuntime(1528):在 java.lang.reflect.Method.invoke(Method.java:521) 10-12 23:40:52.355: E/AndroidRuntime(1528):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 10-12 23:40:52.355: E/AndroidRuntime(1528): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 10-12 23:40:52.355:E/AndroidRuntime(1528):在 dalvik.system.NativeStart.main(本机方法)10-12 23:40:52.355: E/AndroidRuntime(1528):原因:java.lang.NullPointerException 10-12 23:40:52.355: E/AndroidRuntime(1528): 在 com.id11313982.freejokesapp.activities.MainActivity.networkStatusMessage(MainActivity.java:202) 10-12 23:40:52.355: E/AndroidRuntime(1528): 在 com.id11313982.freejokesapp.activities.MainActivity.onCreate(MainActivity.java:78) 10-12 23:40:52.355: E/AndroidRuntime(1528): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069) 10-12 23:40:52.355:E/AndroidRuntime(1528):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751) 10-12 23:40:52.355: E/AndroidRuntime(1528): ... 11 更多

public void networkStatusMessage()  
{
    mJokeView = (TextView) findViewById(R.id.joke_portion_textview_main_activity);
        HelperClass.ShowErrorMessage(getBaseContext(), getString(R.string.connection_not_available_status_localjokeread));
        mJokeView.setText(getString(R.string.connection_not_available_status_localjokeread));
        mJokeView.setGravity(Gravity.CENTER);
    mJokeTitleView.setText("");
            }

protected void onCreate(Bundle savedInstanceState)  {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        actionBar=getSupportActionBar();
    actionBar.setDisplayShowTitleEnabled(false);

        helperClass = new HelperClass();
    stillRandomJoke = true;
        if(helperClass.isNetworkAvailable(MainActivity.this))
    {
        dataBundle = new Bundle();
        dataBundle = helperClass.restoreCategoryPreference(MainActivity.this);
            if(dataBundle.getString(CATEGORY_NAME) != null && dataBundle.getInt(CATEGORY_ID) != 0)
        {
            startJokeId = dataBundle.getInt(FROM_ID);
                endJokeId = dataBundle.getInt(TO_ID);
                currentJokeId = helperClass.restoreJokeIDPreference(MainActivity.this);

                stillRandomJoke = false;
                IssueHTTPRequestForEachJoke(SELECTED_JOKE_URL + currentJokeId);
        }
        else
                IssueHTTPRequestForEachJoke(RANDOM_JOKE_URL);
    }
    else
        networkStatusMessage();
}

【问题讨论】:

  • 请发布相关代码(MainActivity.onCreate() 在第 78 行附近,MainActivity.networkStatusMessage() 在第 202 行附近)。
  • 我认为它现在可以做。贴出上面的代码。谢谢你:)

标签: android nullpointerexception actionbarsherlock


【解决方案1】:

我猜networkStatusMessage 的第 202 行就是这一行:

mJokeTitleView.setText("");

mJokeTitleViewnull,因为您从未设置过它。

【讨论】:

  • 当我删除它时,它不再有错误了。谢谢。 :) 但这很令人困惑,因为我没有将 mJokeTitleView 设置为 null,而只是将空格字符设置为?
  • @ZawnHtut - 我假设mJokeTitleView 是您的活动类的一个字段。如果您没有将其设置为任何值(通过调用findViewById()),它的默认值是null。当您调用 setText() 时,这将引发 NPE。
猜你喜欢
  • 2013-04-10
  • 1970-01-01
  • 1970-01-01
  • 2013-03-24
  • 2017-07-09
  • 2016-08-19
  • 1970-01-01
  • 2020-03-21
  • 2014-09-26
相关资源
最近更新 更多