android - ActionBar 搜索的 ExpandedView 上的空指针

标签 android android-fragments nullpointerexception android-actionbar searchview

我的 ActionBar 中有一个 SearchView。我还有一个 MainFragmentActivity,它在 onCreateOptionsMenu 中加载搜索。当我将 Fragment 换入和换出时,SearchView 工作正常 - 只有一个异常(exception):在特定的 Fragment 上,我像这样加载:

FragmentTransaction t = fm.beginTransaction();
SherlockListFragment mFrag = new RateReviewFragment();

t.add(R.id.main_frag, mFrag);
t.setCustomAnimations(R.anim.animation_leave, R.anim.animation_enter,
        R.anim.animation_leave, R.anim.animation_enter);
t.show(mFrag);
t.addToBackStack(null);
t.commit();

这里唯一的区别是我将它添加到后台。当我尝试在显示此特定 fragment 时点击 ActionBar 中的 SearchView,或此 fragment 显示后的任何 fragment (此 fragment 关闭后,我弹出返回堆栈并清除它),然后出现以下错误。很难诊断,因为它没有显示在我的代码中。

06-17 10:03:33.668: E/AndroidRuntime(9224): FATAL EXCEPTION: main
06-17 10:03:33.668: E/AndroidRuntime(9224): java.lang.NullPointerException
06-17 10:03:33.668: E/AndroidRuntime(9224):     at com.android.internal.widget.ActionBarView$ExpandedActionViewMenuPresenter.expandItemActionView(ActionBarView.java:1470)
06-17 10:03:33.668: E/AndroidRuntime(9224):     at com.android.internal.view.menu.MenuBuilder.expandItemActionView(MenuBuilder.java:1233)
06-17 10:03:33.668: E/AndroidRuntime(9224):     at com.android.internal.view.menu.MenuItemImpl.expandActionView(MenuItemImpl.java:620)
06-17 10:03:33.668: E/AndroidRuntime(9224):     at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:879)
06-17 10:03:33.668: E/AndroidRuntime(9224):     at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:524)
06-17 10:03:33.668: E/AndroidRuntime(9224):     at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:131)
06-17 10:03:33.668: E/AndroidRuntime(9224):     at android.view.View.performClick(View.java:4102)
06-17 10:03:33.668: E/AndroidRuntime(9224):     at android.view.View$PerformClick.run(View.java:17085)
06-17 10:03:33.668: E/AndroidRuntime(9224):     at android.os.Handler.handleCallback(Handler.java:615)
06-17 10:03:33.668: E/AndroidRuntime(9224):     at android.os.Handler.dispatchMessage(Handler.java:92)
06-17 10:03:33.668: E/AndroidRuntime(9224):     at android.os.Looper.loop(Looper.java:155)
06-17 10:03:33.668: E/AndroidRuntime(9224):     at android.app.ActivityThread.main(ActivityThread.java:5454)
06-17 10:03:33.668: E/AndroidRuntime(9224):     at java.lang.reflect.Method.invokeNative(Native Method)
06-17 10:03:33.668: E/AndroidRuntime(9224):     at java.lang.reflect.Method.invoke(Method.java:511)
06-17 10:03:33.668: E/AndroidRuntime(9224):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029)
06-17 10:03:33.668: E/AndroidRuntime(9224):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796)
06-17 10:03:33.668: E/AndroidRuntime(9224):     at dalvik.system.NativeStart.main(Native Method)

这是我收到此错误后所做的少数更改之一:

android:title="Search"
android:showAsAction="always|collapseActionView"

此外,这在 FragmentActivity

searchView.setOnQueryTextListener(new OnQueryTextListener() {
        public boolean onQueryTextChange(String arg0) {
            // TODO Auto-generated method stub
            return false;
        }

        public boolean onQueryTextSubmit(String arg0) {
            if (searchItem != null) {
                searchItem.collapseActionView();
            }
            return false;
        }

    });

这是为了让 SearchView 在提交时自动关闭。注意:我正在使用 ActionBarSherlock

最佳答案

我遇到了完全相同的问题。经过大量痛苦的试验和错误后,我终于发现在我的情况下问题是将图标设置为空:

getSupportActionBar().setIcon(null);

ActionBarSherlock 在执行此操作后尝试显示 ActionView 时神秘地崩溃。

我希望你的情况是相似的。

关于android - ActionBar 搜索的 ExpandedView 上的空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17153104/

相关文章:

java - 迭代二叉树时出现 NullPointerException

java - JRE 在不应出现的情况下给出 NullPointerException

java - 从带有 map fragment 的 fragment 切换会留下黑屏

android - 将 String 从 Broadcastreceiver 传递给 MainActivity 并将其放入 Fragment

android - 如何从 Android 上的实时 FFT 获得最准确的音频数据?

android - 防止 untrusted_app 访问数据库

java - 使用 Android Google Maps API 设置 MapType 空指针异常

java - 设置自定义 ListView 适配器时出现 NullPointer 异常

android - 如何在 Android 中加载 3d 对象?

java - 如何将通话记录中的号码填充到 onClick 列表中?