Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从ActionBar更改为Support.v7.ActionBar_Android_Android Actionbar - Fatal编程技术网

Android 从ActionBar更改为Support.v7.ActionBar

Android 从ActionBar更改为Support.v7.ActionBar,android,android-actionbar,Android,Android Actionbar,我已将一些代码从ActionBar更改为Support.v7.ActionBar——在编译正常运行之后,我在以下代码中发现了一个错误,以前它是有效的: @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main, menu); infla

我已将一些代码从
ActionBar
更改为
Support.v7.ActionBar
——在编译正常运行之后,我在以下代码中发现了一个错误,以前它是有效的:

   @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        inflater.inflate(R.menu.main_activity_actions, menu);
        RelativeLayout badgeLayout = (RelativeLayout) menu.findItem(R.id.badge).getActionView();

        /**** App crashes here *****/
        TextView tv_mode = (TextView) badgeLayout.findViewById(R.id.actionbar_notifcation_textview_mode);


        tv_mode.setText(modeOutput);
        TextView tv_type = (TextView) badgeLayout.findViewById(R.id.actionbar_notifcation_textview_type);

        tv_type.setText(typeOutput);
        return super.onCreateOptionsMenu(menu);
    }
BadgeLayout只是我使用的抽屉的相对布局

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="500dp"
     android:layout_height="fill_parent"
     android:layout_gravity="right"
     android:paddingLeft="16dp"
     android:paddingRight="16dp"
     android:paddingTop="16dp" >

<!-- Menu Item Image -->

<!-- Badge Count -->    
<TextView
    android:id="@+id/actionbar_notifcation_textview_mode"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:textSize="16sp"
    android:background="#F60"
    android:paddingRight="16dp"
    android:paddingLeft="16dp"
    android:layout_marginRight="15sp"
   />
<TextView
    android:id="@+id/actionbar_notifcation_textview_type"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@+id/actionbar_notifcation_textview_mode"
    android:textSize="16sp"
    android:background="#09F"
    android:paddingRight="16dp"
    android:paddingLeft="16dp"
    android:layout_marginRight="15sp"
   />
</RelativeLayout>
我无法理解我的抽屉处理是什么原因,添加Support.v7.actionbar可能会导致此错误。。。有什么想法吗

我试着在有问题的行周围放置一个try-catch,它似乎引用了抽屉TextView
findViewById(R.id.actionbar\u notification\u TextView\u type)生成此空指针异常

我将support.v7作为一个库添加到我现有的项目中,不知道这是否相关

更新:


我删除了对support.v7 ActionBar的所有引用,并改回了正常的ActionBar,一切正常。因此,更改会导致这个奇怪的问题……

您是否检查了
badgeLayout
是否为空?有可能
getActionView()
返回null

看看

你试过使用Sherlock ActionBar吗?还不累。。。优点是什么?如果你的目标设备是android sdk<11,你应该使用Sherlock Action Bar,因为它提供了对它们的支持。看一看我不是,但会看一看。。。谢谢,我会查。。。已删除库,但由于某些原因,现在无法让它们编译是的,您是正确的,它返回null。。。有什么解决办法吗?好的,我在这里找到了解决办法
01-15 21:36:33.889: E/AndroidRuntime(5265): java.lang.NullPointerException
01-15 21:36:33.889: E/AndroidRuntime(5265):     at com.MainActivity.onCreateOptionsMenu(MainActivity.java:345)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at android.app.Activity.onCreatePanelMenu(Activity.java:2504)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:224)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at android.support.v7.app.ActionBarActivity.superOnCreatePanelMenu(ActionBarActivity.java:232)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at android.support.v7.app.ActionBarActivityDelegateICS.onCreatePanelMenu(ActionBarActivityDelegateICS.java:147)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at android.support.v7.app.ActionBarActivity.onCreatePanelMenu(ActionBarActivity.java:199)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at android.support.v7.app.ActionBarActivityDelegateICS$WindowCallbackWrapper.onCreatePanelMenu(ActionBarActivityDelegateICS.java:285)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:413)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:775)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:198)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at android.view.Choreographer.doCallbacks(Choreographer.java:562)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at android.view.Choreographer.doFrame(Choreographer.java:531)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at android.os.Handler.handleCallback(Handler.java:730)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at android.os.Handler.dispatchMessage(Handler.java:92)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at android.os.Looper.loop(Looper.java:137)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at android.app.ActivityThread.main(ActivityThread.java:5103)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at java.lang.reflect.Method.invokeNative(Native Method)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at java.lang.reflect.Method.invoke(Method.java:525)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-15 21:36:33.889: E/AndroidRuntime(5265):     at dalvik.system.NativeStart.main(Native Method)