簡體   English   中英

AppCompat v21中SearchView的問題

[英]Issue with SearchView in AppCompat v21

我正在使用帶工具欄的AppCompat v21和在Android Studio 0.8.14中即時開發

如果我通過USB將我的(4.4)手機插入PC並運行應用,則searchview會正常工作。 我調出片段並按搜索圖標,它使我可以鍵入文本。

但是,如果我在gradle中組裝發布版本並在按搜索圖標時在我的設備上安裝應用,則不會發生任何事情。 不啟動搜索視圖。 這是我的代碼。

我的IconsFrag.java

@Override
public void onPrepareOptionsMenu (Menu menu) {
    Log.i(FRAG_TAG, "onPrepareOptionsMenu");
    MenuInflater inflater = getActivity().getMenuInflater();
    inflater.inflate(R.menu.icon_menu, menu);
    MenuItem searchItem = menu.findItem(R.id.search);

    SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);

    SearchView searchView = null;
    if (searchItem != null) {
        searchView = (SearchView) searchItem.getActionView();
    }
    if (searchView != null) {
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
    }

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Log.i(FRAG_TAG, "onOptionsItemSelected");
    return super.onOptionsItemSelected(item);
}

我的模塊build.gradle

repositories {
    mavenLocal()
    mavenCentral()
    dependencies {
        apply plugin: 'maven'
        compile 'com.github.gabrielemariotti.cards:library:1.9.1'
        compile 'com.nhaarman.listviewanimations:library:2.6.0'
        compile 'com.github.gabrielemariotti.changeloglib:library:1.5.2'
        compile 'com.shamanland:fab:0.0.5'
        compile 'com.nineoldandroids:library:2.4.0'
        compile 'com.google.android.apps.muzei:muzei-api:+'
        compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'
        compile 'com.loopj.android:android-async-http:1.4.6'
        compile 'com.github.chrisbanes.photoview:library:1.2.3'
        compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'
        compile 'com.daimajia.easing:library:1.0.0@aar'
        compile 'com.daimajia.androidanimations:library:1.1.2@aar'
    }
    maven { url 'http://download.crashlytics.com/maven' }
    flatDir{
        dirs 'libs'
    }
}

Properties props = new Properties()
props.load(new FileInputStream(file(project.property("test.properties"))))

android {
    compileSdkVersion 21
    buildToolsVersion "21.0.2"

    defaultConfig {
        applicationId "source.test.com"
        minSdkVersion 15
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }

    signingConfigs {
        release {
            storeFile file(props['keystore'])
            storePassword props['keystore.password']
            keyAlias props['keyAlias']
            keyPassword props['keyPassword']
        }
    }

    buildTypes {
        release {
            debuggable false
            zipAlign true
            runProguard true
            proguardFile getDefaultProguardFile('proguard-android-optimize.txt')
            proguardFile file('proguard.txt')
            signingConfig signingConfigs.release
        }
    }
    lintOptions {
        checkReleaseBuilds true
    }

}


dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.android.support:appcompat-v7:21.0.0'
    compile 'com.android.support:palette-v7:21.0.0'
    compile 'com.android.support:cardview-v7:21.0.0'
    compile 'com.android.support:recyclerview-v7:21.0.0'
    compile 'com.crashlytics.android:crashlytics:1.+'
    compile 'uk.me.lewisdeane.ldialogs:materialdialog@aar'
}

這是我的菜單

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto" >
    <item android:id="@+id/search"
        android:title="@string/search"
        android:icon="@drawable/app_ic_menu_search"
        app:showAsAction="always"
        app:actionViewClass="android.support.v7.widget.SearchView" />
</menu>

可能是SearchView重命名了SearchView類。 嘗試將其添加到您的proguard.txt文件中

-keep class android.support.v7.** { *; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM