启动活动时的android null异常

时间:2014-02-17 09:17:17

标签: android android-actionbar android-support-library

首先

I am using support libraries

我有一个BrowseFoods活动

<activity
      android:name=".BrowseFoods"
      android:label="@string/app_name"
      android:theme="@style/MyCustomTheme" >
      <intent-filter>
          <action android:name="com.Syriatel.BROWSEFOODS" />
          <category android:name="android.intent.category.DEFAULT" />
      </intent-filter>
      <meta-data
          android:name="android.app.searchable"
          android:resource="@xml/searchable" />
      <meta-data
          android:name="android.support.PARENT_ACTIVITY"
          android:value=".MainCustomerMenu2" />
</activity>

,代码为:

public class BrowseFoods extends ActionBarActivity{
public boolean onPrepareOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        int currentTab = mViewPager.getCurrentItem();
        if (currentTab == 0) {
            menu.clear();
            inflater.inflate(R.menu.all_food, menu);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                MenuItem searchItem = menu.findItem(R.id.searchMenuItem);
                SearchManager searchManager =
                        (SearchManager) getSystemService(Context.SEARCH_SERVICE);
                android.support.v7.widget.SearchView searchView = (android.support.v7.widget.SearchView) MenuItemCompat.getActionView(searchItem);

                searchView.setSearchableInfo(
                        searchManager.getSearchableInfo(getComponentName()));
                searchView.setIconifiedByDefault(false);

            }
        } else {
            menu.clear();
            inflater.inflate(R.menu.favoritefood, menu);
        }
        return super.onPrepareOptionsMenu(menu);
    }
}

在那个活动中,我将两个片段添加为标签,因此在准备菜单时,我会检查当前使用的标签。因此,我知道我必须使用哪个菜单。

请查看代码,我正在使用 all_foods 菜单 这是:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:yourapp="http://schemas.android.com/apk/res-auto" >

    <item android:id="@+id/searchMenuItem"
          android:title="searchnNsNNN"
          android:icon="@android:drawable/ic_lock_lock"
          yourapp:showAsAction="collapseActionView|ifRoom"
          android:actionViewClass="android.support.v7.widget.SearchView" />

当我运行我的应用程序时,我遇到了这个例外:

02-17 11:09:38.384: E/AndroidRuntime(5064): FATAL EXCEPTION: main
02-17 11:09:38.384: E/AndroidRuntime(5064): android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
02-17 11:09:38.384: E/AndroidRuntime(5064):     at android.view.LayoutInflater.createView(LayoutInflater.java:606)
02-17 11:09:38.384: E/AndroidRuntime(5064):     at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)

注意

如果我评论这些代码

 // searchView.setSearchableInfo(
                 //       searchManager.getSearchableInfo(getComponentName()));
             //   searchView.setIconifiedByDefault(false);

该计划运作良好。

请帮忙

1 个答案:

答案 0 :(得分:2)

更改

  android:actionViewClass="android.support.v7.widget.SearchView" />

  yourapp:actionViewClass="android.support.v7.widget.SearchView" />

参考:看看添加动作视图@

http://developer.android.com/guide/topics/ui/actionbar.html

当您尝试使用大图像时,通常会出现

OutOfMemory。你的内存耗尽导致OOM。

如果遇到这样的错误,请确保缩小图像。