使用Action Bar compat库时出错Landroid / support / v7 / widget / SearchView $ 5

时间:2014-04-14 14:47:57

标签: android android-actionbar android-actionbar-compat

好的,我已经正确导入了v7-appcompat库(是的,我已经取消选中了依赖项),在项目中使用时我得到了log cat中的错误列表。     该应用程序正常运行和Android Moto g即在Android 4.4.2上,但不在我的LG p500 2.2.2上,

我还按照从http://developer.android.com/tools/support-library/setup.html

官方网站导入android资源库的说明进行操作

我开始认为这是一个安卓漏洞,请帮忙

- 04-14 19:59:22.223: W/dalvikvm(12718): VFY: unable to resolve virtual method 318:          Landroid/content/pm/PackageManager;.getActivityLogo (Landroid/content/ComponentName;)Landroid/graphics/drawable/Drawable;
- 04-14 19:59:22.223: W/dalvikvm(12718): VFY: unable to resolve virtual method 314: Landroid/content/pm/ApplicationInfo;.loadLogo  (Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;
  04-14 19:59:22.463: W/dalvikvm(12718): Link of class 'Landroid/support/v7/widget/SearchView$5;' failed
  04-14 19:59:22.463: E/dalvikvm(12718): Could not find class 'android.support.v7.widget.SearchView$5', referenced from method android.support.v7.widget.SearchView.addOnLayoutChangeListenerToDropDownAnchorSDK11
  04-14 19:59:22.463: W/dalvikvm(12718): VFY: unable to resolve new-instance 840 (Landroid/support/v7/widget/SearchView$5;) in Landroid/support/v7/widget/SearchView;
  04-14 19:59:22.663: W/dalvikvm(12718): VFY: unable to resolve direct method 8207: Landroid/widget/LinearLayout$LayoutParams;.<init> (Landroid/widget/LinearLayout$LayoutParams;)V

我的代码很简单,,, action.xml(操作栏的菜单)

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

    <item
          android:id="@+id/item1"
          android:icon="@drawable/ic_action_copy"
          android:title="@string/title"
          lol:showAsAction="ifRoom"
          />

    <item
    android:id="@+id/searchActivity"
    android:icon="@drawable/ic_action_search"
    android:title="@string/action_search"
    lol:showAsAction="ifRoom|collapseActionView"
    lol:actionViewClass="android.support.v7.widget.SearchView"/>    
    </menu>

android清单文件如下

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.gamehaschanged"
        android:versionCode="1"
        android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.AppCompat.Light.DarkActionBar" >
        <activity
            android:name="com.example.gamehaschanged.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

mainActivity也直接如下

package com.example.gamehaschanged;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.action, menu);
    MenuItem searchItem = menu.findItem(R.id.searchActivity);
    return true;
}

}

该项目没有崩溃,但发出警告和错误,我不希望在项目后期出现任何问题

1 个答案:

答案 0 :(得分:3)

我没有50条评论的声誉,所以我会在这里回答。

您将需要两个库:

android-support-v4.jar
android-support-v7-appcompat.jar

如果您计划在Android项目中使用appcompat库。

您可以将上述JAR文件从\android-sdk\extras\android\support\v7\appcompat\libs目录复制到项目的libs目录中,从而将上述JAR文件嵌入到项目中。

或者,您可以通过以下方式在不同的Android项目中共享appcompat库:

  1. 在Eclipse中,选择文件|导入|现有项目进入工作区。然后,点击下一步

  2. 点击浏览,然后浏览到Android appcompat目录。默认目录应为:.. \ android-sdk \ extras \ android \ support \ v7 \ appcompat。

  3. 点击完成以添加新项目。

  4. 选择Android项目的属性标签

  5. 在“属性”屏幕中,选择 Android 选项(在左侧窗格中),然后单击添加,并从列表中选择appcompat库。 / p>

  6. 点击确定以保存更改。