相关疑难解决方法(0)

SearchView getActionView返回null

这是几天前的工作,但突然停止了.我只想在某些片段可见时使用操作栏搜索小部件.

现在我无法得到SearchView,现在getActionView总是返回null.

searchable.xml

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
        android:label="@string/app_name"
        android:hint="@string/search_for_places">
</searchable>
Run Code Online (Sandbox Code Playgroud)

的Manifest.xml

<activity
    android:name=".ui.activities.MainActivity"
    android:launchMode="singleTop">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
        <action android:name="android.intent.action.SEARCH"/>
    </intent-filter>
    <meta-data
        android:name="android.app.searchable"
        android:resource="@xml/searchable"/>
    <meta-data
    android:name="android.app.default_searchable"
    android:value=".ui.activities.MainActivity" />
</activity>
Run Code Online (Sandbox Code Playgroud)

menu.xml文件

<menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:myapp="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_search_place"
        android:icon="@drawable/ic_2_action_search"
        android:orderInCategory="1"
        android:title="@string/title_search"
        myapp:showAsAction="collapseActionView|ifRoom"
        myapp:actionViewClass="android.support.v7.widget.SearchView"/>
</menu>
Run Code Online (Sandbox Code Playgroud)

片段

...
setHasOptionsMenu(true);
...



@Override
public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
    inflater.inflate(R.menu.menu, menu);
    MenuItem searchItem = menu.findItem(R.id.action_search_place);
    mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);

    SearchManager searchManager = (SearchManager) getBaseActivity().getSystemService(Context.SEARCH_SERVICE);
    if (mSearchView != null) …
Run Code Online (Sandbox Code Playgroud)

android android-searchmanager android-support-library

45
推荐指数
4
解决办法
3万
查看次数

使用Latest SupportVersion在MenuInflater Android中获取null

我正在尝试在操作栏中创建一个像视图一样的徽章.(使用最新的支持库).

我正在尝试以下方式.但它说空指针异常.

    public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.activity_dashboard_menu, menu);

    MenuItem textBadge = menu.findItem(R.id.badge);
    RelativeLayout badgeLayout = (RelativeLayout) MenuItemCompat.getActionView(textBadge);
    TextView tv = (TextView) badgeLayout.findViewById(R.id.actionbar_notifcation_textview);
    tv.setText("12");

    return super.onCreateOptionsMenu(menu);

}
Run Code Online (Sandbox Code Playgroud)

Menu.xml是

    <item
    android:id="@+id/badge"
    android:actionLayout="@layout/actionbar_badge_layout"
    android:icon="@drawable/btn_star_off_disabled_holo_light"
    android:showAsAction="always|withText">
</item> 
Run Code Online (Sandbox Code Playgroud)

而Layout.xml是

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="48dp"
android:layout_height="fill_parent"
android:layout_gravity="right" >

<!-- Menu Item Image -->
<ImageView
    android:layout_width="48dp"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:src="@drawable/btn_star_off_disabled_holo_light" />

<!-- Badge Count -->    
<TextView
    android:id="@+id/actionbar_notifcation_textview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:padding="5dp"
    android:text="99"
    android:textColor="#ffffff" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

这是我的日志:

01-22 09:12:45.439: E/AndroidRuntime(4819): FATAL EXCEPTION: main
01-22 09:12:45.439: E/AndroidRuntime(4819): …
Run Code Online (Sandbox Code Playgroud)

android actionbarsherlock android-actionbar android-actionbar-compat

4
推荐指数
1
解决办法
1513
查看次数