标签: android-searchmanager

使用Fragments进行Android搜索

有人知道一个教程或如何用s 实现标准Android搜索界面的例子Fragment吗?换句话说,是否可以SearchManager在片段中使用标准搜索?

java sqlite android android-searchmanager android-fragments

155
推荐指数
7
解决办法
8万
查看次数

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万
查看次数

Android:如何检测单击自定义SearchView元素

我正在创建一个自定义SearchView,但到目前为止,如果用户点击searchView小部件,我没有找到(点击)事件或监听器.所以SearchView很接近,用户点击搜索图标(哪个监听器?!),SearchView被打开.见下图.我需要那个事件,因为我想在用户打开searchView后更改UI

在此输入图像描述

编辑: 到目前为止我尝试的是

  • setOnClickListener 到SearchView元素 - >但它只在SearchView打开时触发(第2张图片)

  • 搜索了SearchViewApi,但是没有听众那个动作(或者我是盲人?)

  • 尝试使用onWindowFocusChangedsearchView 解决方法,但由于searchView隐藏在某种youtube/facebook侧边栏中,这不起作用

有任何想法吗?我也附上了我的SearchView代码,但不认为代码是错误的.只是没有听众.顺便说一句:欢迎任何变通方法.但如果SearchView在开始时关闭,那就太好了!(如上图所示)

public class AmplifySearchView extends SearchView implements
        OnQueryTextListener, OnFocusChangeListener,
        OnCloseListener {

    private static final String DEBUG_TAG = "AmplifySeachView";

    private Context context;
    private DataBaseController datasource;
    private StationListView searchResultListView;
    private TextView noResultTextView;

    private Boolean searchStarted = false;

    public AmplifySearchView(Context context) {
        super(context);
        this.context = context;
    }

    public AmplifySearchView(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.context = context;
    }

    public void initSearchView(StationListView view, TextView noResultTextView) {
        this.searchResultListView = view; …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-searchmanager

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

什么时候需要在Android小部件或应用程序中使用singleTop launchMode?

我刚被一个小部件烧毁了.我可以看到问题的原因,但我无法确定原因或解决方案.我的小部件发出了一个搜索(SearchManager),活动启动了一个搜索对话框,但当它回调到我的小部件时,它创建了另一个对小部件的引用(即,thread-id是相同的,但是widget-id从65变为0).

这让我相信创建了一个新实例,并在文档中搜索了适用于该问题的设置.最终,我偶然发现了,android:launchMode="singleTop"并且只要我在AndroidManifest中设置它,中提琴!我的小部件工作.

这花了我两天的调试时间.

还有其他任何情况或者我的问题是否有更技术上更正确的答案?

android android-widget android-searchmanager

25
推荐指数
1
解决办法
3万
查看次数

操作栏上的搜索小部件不会触发我的搜索活动

我正在开发基于官方教程的搜索小部件界面:http://developer.android.com/guide/topics/search/search-dialog.html

问题:当我输入查询并按Ok/enter时,我的SearchableActivity不会被触发.

SearchableActivity的清单:

<activity android:name="SearchableActivity" android:launchMode="singleTop" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>

        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />
</activity>
Run Code Online (Sandbox Code Playgroud)

XML/searchable.xml

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

主动作生命周期方法,将动作栏添加图标(工作正常):

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.main, menu);

    // Get the SearchView and set the searchable configuration
    SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

    // Do not iconify the widget;expand it by default
    searchView.setIconifiedByDefault(false);

    return true;
}
Run Code Online (Sandbox Code Playgroud)

SearchableActivity.java

public class SearchableActivity extends ListActivity {

    /** …
Run Code Online (Sandbox Code Playgroud)

android android-searchmanager android-actionbar

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

Android动作栏搜索小部件实现在ListFragment中

我目前的应用程序设置ListFragment在左侧和DetailsFragment右侧(类似于下面平板电脑上的布局).

布局

在操作栏上,我有一个搜索小部件,当提交搜索词时,应该更新列表的内容(在ListFragment中).我一直在关注Android开发(搜索指南http://developer.android.com/guide/topics/search/search-dialog.html),但我有,让搜索更新相同的活动列表中的问题.

我已经设法通过在提交搜索词时调用新活动来实现某种形式的实现,但是这使得后退按钮表现得很奇怪(即,您按回去,然后转到上一个活动,搜索小部件仍然显示搜索词).

我已将意图行添加到清单中,如下所示

<intent-filter>
        <action android:name="android.intent.action.SEARCH" />
    </intent-filter>
    <meta-data android:name="android.app.searchable"
               android:resource="@xml/searchable"/>
Run Code Online (Sandbox Code Playgroud)

是否有可能让搜索小部件更新当前活动的列表?

android android-searchmanager android-3.0-honeycomb android-4.0-ice-cream-sandwich android-actionbar

20
推荐指数
1
解决办法
2万
查看次数

SearchInfo总是空出来

我在操作栏中设置搜索视图时遇到问题.

我跟着开发者网站,但它不起作用.我觉得我错过了什么.

当我运行我的代码时,它总是输出"无法获取可搜索的信息"(MainActivity.setupSearchView()).

MainActivity.java

// package...
// imports...
public class MainActivity extends Activity {
    private static String tag = "Main Activity";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater mi = getMenuInflater();
        mi.inflate(R.menu.search_view, menu);
        setupSearchView(menu);
        return true;
    }
    private void setupSearchView(Menu menu) {
        SearchManager sm = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchableInfo si = sm.getSearchableInfo(getComponentName());
        if (si == null) {
            Log.wtf(tag, "failed to get searchable info");
            return;
        }
        SearchView sv = (SearchView) menu.findItem(R.id.menu_search).getActionView();
        sv.setSearchableInfo(si);
        // …
Run Code Online (Sandbox Code Playgroud)

android android-searchmanager android-search

19
推荐指数
4
解决办法
6054
查看次数

Android:getSearchableInfo(getComponentName())返回null?

我正在尝试获取SearchView的建议.我为它实现了一个自定义内容提供程序.我也提到了这个链接来实现SearchView的建议.我面临的问题是,我得到空值searchManager.getSearchableInfo(getComponentName())

以下是片段:

AndroidManifest.xml中

    <application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <provider android:name=".SearchProvider"
        android:enabled="true"
        android:authorities="com.example.currentlocationmapdemo"
        android:grantUriPermissions="true"
        android:exported="true">
        <grant-uri-permission android:pathPattern="*" />
    </provider>
    <uses-library android:name="com.google.android.maps" />

    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      <meta-data android:name="android.app.searchable"
          android:resource="@xml/searchable"/> 
    </activity>
Run Code Online (Sandbox Code Playgroud)

searchable.xml

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

主要活动

    @Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.searchview_in_menu, menu);
    MenuItem searchItem = menu.findItem(R.id.action_search);
    mSearchView = (SearchView) searchItem.getActionView();
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchableInfo info …
Run Code Online (Sandbox Code Playgroud)

android android-searchmanager search-suggestion searchview

12
推荐指数
2
解决办法
9059
查看次数

动态设置搜索提示

有谁知道如何动态设置android搜索对话框提示?T尝试做类似的事情:

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

某处:

@Override
public boolean onSearchRequested() {
  Bundle appSearchData = new Bundle();
  appSearchData.putString("SomeSpecificParam", SomeClass.class.getName());
  startSearch("", false, appSearchData, false);
  EditText  text = (EditText )findViewById(R.id.search_dialog_text);
  text.setHint("Search something else");
  return true;
}
Run Code Online (Sandbox Code Playgroud)

但是文本等于null.

所以期待你的建议.谢谢.

android android-searchmanager

11
推荐指数
1
解决办法
5353
查看次数

单一活动中的Android搜索活动

我想让我的应用程序包含一个单一的活动.此活动应该能够创建搜索并接收搜索.不幸的是,当我点击操作栏中的搜索按钮时,我的SearchView中会出现一个"双"搜索栏.我的意思是有一个搜索栏(dark-- SearchView)在操作栏中显示一秒钟,然后在操作栏上显示第二个(白色).有帮助吗?我究竟做错了什么?对不起,这个搜索的东西都是新的,让我感到困惑.

MainActivity(唯一的活动):

public class MainActivity extends ActionBarActivity {
Menu mMenu;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //getSupportActionBar().setDisplayShowTitleEnabled(false);
    setContentView(R.layout.activity_main);

    handleIntent(getIntent());
}

@Override
protected void onNewIntent(Intent intent) {
    handleIntent(intent);
}

private void handleIntent(Intent intent) {
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
        String query = intent.getStringExtra(SearchManager.QUERY);
        //use the query to search your data somehow
    }
}

@SuppressLint("NewApi")
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    mMenu = menu;
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);



    if …
Run Code Online (Sandbox Code Playgroud)

android android-searchmanager searchview android-search

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