- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我只是一个初学者,我在这里搜索了这个问题,发现了 4-5 个问题,但这对我没有帮助。我只是在 Actionbar 中尝试 searchView,我的 Activity 是 AppCompatActivity,我的代码在下面。我在这个 Activity 中使用工具栏。并使用这个 library也。创建选项菜单:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
SearchManager SManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
MenuItem searchMenuItem = menu.findItem(R.id.action_search);
SearchView searchViewAction = (SearchView) MenuItemCompat.getActionView(searchMenuItem);
searchViewAction.setSearchableInfo(SManager.getSearchableInfo(getComponentName()));
searchViewAction.setIconifiedByDefault(false);
return super.onCreateOptionsMenu(menu);
}
XML:
<item android:id="@+id/action_search"
android:title="action_search"
MainActivity:showAsAction="ifRoom"
MainActivity:actionViewClass="android.support.v7.widget.SearchView" />
和 logcat:
java.lang.NullPointerException
at algonation.com.spm.MainActivity.onCreateOptionsMenu(MainActivity.java:183)
at android.app.Activity.onCreatePanelMenu(Activity.java:2571)
at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:277)
at android.support.v7.internal.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:84)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallback.onCreatePanelMenu(AppCompatDelegateImplBase.java:251)
at android.support.v7.internal.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:84)
at android.support.v7.internal.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:449)
at android.support.v7.internal.app.ToolbarActionBar$1.run(ToolbarActionBar.java:66)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5292)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
at dalvik.system.NativeStart.main(Native Method)
如果您需要 MainActivity 的完整代码,请告诉我。非常感谢。
最佳答案
您将收到 NullPointerException,因为下行返回 null。
SManager.getSearchableInfo(getComponentName()
你需要
1 - Declare the activity(which needs to perform search) to accept the ACTION_SEARCH intent, in an <intent-filter> element.
2 - Specify the searchable configuration to use, in a <meta-data> element.
假设您在您的 MainActivity(您想要的 AppCompatActivity)中执行搜索,请参见下面的示例:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_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.my_main, menu);
MenuItem searchMenuItem = menu.findItem(R.id.action_search);
SearchView searchViewAction = (SearchView) MenuItemCompat
.getActionView(searchMenuItem);
// Get the SearchView and set the searchable configuration
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchableInfo searchableInfo = searchManager
.getSearchableInfo(getComponentName());
searchViewAction.setSearchableInfo(searchableInfo);
searchViewAction.setIconifiedByDefault(false);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
AndroidManifest.xml
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
</application>
menu/activity_main.xml
<item
android:id="@+id/action_search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="ifRoom"
android:title="@string/action_search"/>
res/xml/searchable.xml
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_label"
android:hint="@string/search_hint" >
</searchable>
希望能解决您的问题,供引用see here .
关于android - SearchView AppCompatActivity 中的空指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30641568/
我正在升级我之前制作的一款游戏的用户界面,并且正朝着 Google 的 Material Design 方向发展。作为代码升级的一部分,我将向后兼容性支持库 android-support-v7-ap
更改applicationId后,Android Studio无法解析AppCompatActivity,DialogFragment,支持V4 Fragment和支持库中的类似项。 我努力了: 清洁
我尝试使用下面的代码在 android studio 中导入 AppCompatActivity import android.support.v7.app.AppCompatActivity; “a
我想将工具栏添加到我的 Android 应用程序,但是我得到了“致命异常:主要 java.lang.OutOfMemoryError"当我将 Activity 更改为 AppCompatActivit
您好,我想为此创建 float Activity ,我知道我可以将此样式设置为我的 Activity 。 android:theme="@android:style/Theme.Translucent
我使用的是Android Studio 1.5.1版本 如果我创建新项目并且 MainActivity 扩展 AppCompatActivity 那么它不起作用它会给出如下错误: 12-02
虽然之前有人问过这个问题,但没有一个解决方案对我有用。 问题是突然莫名其妙的 Android Studio 开始抛出 Cannot resolve symbol AppCompatActivity 的
我正在尝试添加搜索功能以从 Activity 列表中搜索项目。我正在为 android 5.1 尝试它,我想支持向后兼容性。我正在使用 android-support-v7-appcompat。 主要
我正在尝试为以编程方式扩展 AppCompatActivity 的类设置工具栏,但该 Activity 在运行时没有工具栏。我能够找到的关于使用工具栏的每个教程都以 XML 创建和添加工具栏,但我正在
我是从 Eclipse 开始接触 Android Studio 的新手,正在尝试调整设置。当我添加 Activity(空白 Activity )时,它会生成 java 文件,但会出现 extends
我正在开发一个使用 AppCompatActivity 的应用程序。这么多天以来,我一直在努力解决这个错误,但没有运气,也没有在 StackOverflow 上回答这样的答案。 gradle构建成功,
这个问题在这里已经有了答案: Out of Memory : android.support.v7.app.AppCompatActivity.onCreate (2 个答案) 关闭 6 年前。 再
我需要在我的应用程序中添加一个抽屉导航。这些 Activity 扩展了 AppCompatActivity。我希望在某些 Activity 中使用抽屉导航。抽屉导航应该看起来像 play store
我试图在全屏模式下隐藏标题栏。当我尝试使用 Activity 时,标题栏消失了。但是当我使用 AppCompatActivity 时,它仍然存在。知道为什么会这样吗?我应该更改 list 等其他内容吗
我正在将我的应用程序从 GCM 转移到 Firebase 以获取推送通知,这涉及更改某些依赖项。我将 gcm 依赖项更改为 firebase 并尝试同步项目,但在同步后我发现我所有实现了 AppCom
在我的应用程序的 build.gradle 中,依赖项是: compile 'com.android.support:support-v4:22.0.0' compile 'com.android.s
将 Activity 的父级从 Activity 更改为 AppCompatActivity 后,按钮上的字体发生了变化。例如,Remove-REMOVE。对于其他 Vews,字体没有改变。 为什么按
我的状态栏总是显示为黑色。我尝试了多种修复方法,但没有任何效果...我不敢相信这么简单的事情竟然如此复杂 这是我的 Style.xml: @color/cobalt @color/
重命名应用包名后,Android Studio 显示此错误can't resolve symbol AppCompatActivity 我尝试过的事情: 清理项目 清理 Android Studio
我有一个继承自 AppCompactActivity 的 Activity。在 Activity 集主题的 list 中: true @color/primary @colo
我是一名优秀的程序员,十分优秀!