相关疑难解决方法(0)

什么是'app'Android XML命名空间?

这是app我从res/menu/main.xml文件中看到的命名空间的示例

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity" >
<item android:id="@+id/action_settings"
    android:title="@string/action_settings"
    android:orderInCategory="100"
    app:showAsAction="never" />
</menu>
Run Code Online (Sandbox Code Playgroud)

app命名空间的用途是什么?它是"标准"Android XML命名空间吗?是否有相同的值选项可用于放置在两个不同命名空间中的相同属性(例如app:showAsActionandroid:showAsAction).

来自文档: android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]

即,如果属性是相反的,上面示例中的行是否意味着其他内容:

android:showAsAction="never"
Run Code Online (Sandbox Code Playgroud)

它几乎看起来可能是某种"子类化"机制,但我似乎无法app从Google/Android源代码中找到关于命名空间的任何真实文档.

xml android xml-namespaces android-layout android-tools-namespace

159
推荐指数
1
解决办法
7万
查看次数

将SearchView与AppCompat一起使用时出现空指针异常

今天我花时间迁移到AppCompat库.除了我的SearchView,我已经成功设置了所有内容.

之前,它运行正常,但现在我nullPointerException在使用代码时不断获取

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

我到处寻找尝试为我的问题找到解决方案,但我找不到任何地方(我试过的那些不起作用).

任何指导都将受到赞赏,ty.

这是我打电话的地方:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);

    MenuItem searchItem = menu.findItem(R.id.search);

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

    SearchView searchView = (SearchView) MenuItemCompat
            .getActionView(searchItem);

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



    return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)

这是菜单XML文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:compat="http://schemas.android.com/apk/res-auto" 
xmlns:app="http://schemas.android.com/apk/res/android" >>

<item
    android:id="@+id/about"
    android:orderInCategory="3"
    android:showAsAction="never"
    android:title="@string/about"/>
<item
    android:id="@+id/rate"
    android:orderInCategory="2"
    android:showAsAction="never"
    android:title="@string/rate"/>
<item
    android:id="@+id/search"
    android:icon="@android:drawable/ic_menu_search"
    android:orderInCategory="1"
    app:actionViewClass="android.support.v7.widget.SearchView"
    compat:showAsAction="ifRoom|collapseActionView">
</item>
Run Code Online (Sandbox Code Playgroud)

表现:

    <activity
        android:name="com.stack.overflow.MainActivity"
        android:label="@string/app_name"
        android:launchMode="singleTop"
        android:theme="@style/Theme.AppCompat" >
        <meta-data
            android:name="android.app.default_searchable"
            android:resource="@xml/searchable" />
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name="android.intent.action.SEARCH" />
            <category android:name="android.intent.category.LAUNCHER" /> …
Run Code Online (Sandbox Code Playgroud)

android nullpointerexception android-appcompat searchview

13
推荐指数
2
解决办法
4410
查看次数

android:actionViewClass和app:actionViewClass之间有什么区别?

参见下面的菜单xml文件,

<?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:title="Search"
    android:id="@+id/search_menu"
    android:icon="@android:drawable/ic_menu_search"
    app:actionViewClass="android.widget.SearchView"
    app:showAsAction="always"/>
Run Code Online (Sandbox Code Playgroud)

这让我感到困惑,如果使用android:actionViewClass,我会得到类似searchview为null的错误,但是使用app:actionViewClass,一切似乎都很好。所以我想知道为什么:android:actionViewClass和app:actionViewClass之间有区别。

android android-layout

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