Форум программистов, компьютерный форум CyberForum.ru

SearchView в ActionBar - Android

Восстановить пароль Регистрация
 
Renko17
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 29
24.10.2016, 22:43     SearchView в ActionBar #1
Всем привет! Добавил в ActionBar фрагмента SearchView, но он не появляется, пустой ActionBar. С добавлением SearchView в ActionBar активити проблем нет. Видимо, я упускаю специфику фрагмента.

res/xml/searchable
XML
1
2
3
4
<?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" />
res/menu/main
XML
1
2
3
4
5
6
7
8
9
10
11
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
 
    <!-- Search Widget -->
    <item
        android:id="@+id/action_search"
        android:actionViewClass="android.widget.SearchView"
        android:icon="@drawable/ic_launcher"
        android:showAsAction="always"
        android:title="Search"/>
 
</menu>
Manifest
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.yuzzers.peopleandquestion">
    <uses-permission android:name="android.permission.INTERNET" />
 
 
 
 
    <application
        android:name=".ParseApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/MyMaterialTheme">
        <activity android:name=".MainActivity">
            <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>
 
 
        <!-- ATTENTION: This was auto-generated to add Google Play services to your project for
     App Indexing.  See [url]https://g.co/AppIndexing/AndroidStudio[/url] for more information. -->
        <activity android:name=".SingleItemView">
 
        </activity>
 
 
    </application>
 
</manifest>
OneFragment
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package com.yuzzers.peopleandquestion;
 
import android.annotation.TargetApi;
import android.app.SearchManager;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.SearchView;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
 
import com.parse.FindCallback;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseQuery;
 
import java.util.List;
 
 
public class OneFragment extends Fragment {
 
    ListView listview;
 
 
    ArrayAdapter<String> adapter;
 
 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
 
      }
 
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_one, container,false);
        setHasOptionsMenu(true);
 
     //  getActivity().getActionBar().setDisplayShowTitleEnabled(false);
      //  getActivity().getActionBar().setHomeButtonEnabled(false);
 
        listview = (ListView) view.findViewById(R.id.listview);
        return view;
 
 
 
    }
 
    public void onStart(){
        super.onStart();
        final ParseQuery<ParseObject> query = new ParseQuery<> ("_User");
        query.orderByDescending("_created_at");
        query.findInBackground(new FindCallback<ParseObject>() {
            @Override
            public void done(List<ParseObject> objects, ParseException e) {
                try {
                    objects = query.find();
                } catch (ParseException e1) {
                    e1.printStackTrace();
                }
                adapter = new ArrayAdapter<>(getActivity(), R.layout.listview_item);
                if (objects!=null){
 
                    for (ParseObject user : objects) {
                        adapter.add((String) user.get("username"));
                        listview.setAdapter(adapter);
                    }
                }
 
 
            }
        });
        listview.setTextFilterEnabled(true);
        }
 
 
 
    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater ) {
 
        inflater.inflate(R.menu.main, menu);
 
        SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
 
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
        searchView.setIconifiedByDefault(false);
 
        SearchView.OnQueryTextListener textChangeListener = new SearchView.OnQueryTextListener()
        {
            @Override
            public boolean onQueryTextChange(String newText)
            {
                // this is your adapter that will be filtered
                adapter.getFilter().filter(newText);
                System.out.println("on text chnge text: "+newText);
                return true;
            }
            @Override
            public boolean onQueryTextSubmit(String query)
            {
                // this is your adapter that will be filtered
                adapter.getFilter().filter(query);
                System.out.println("on query submit: "+query);
                return true;
            }
        };
        searchView.setOnQueryTextListener(textChangeListener);
        super.onCreateOptionsMenu(menu, inflater);
 
    }
    }
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2016, 22:43     SearchView в ActionBar
Посмотрите здесь:

Android SearchView или своя реализация поиска (UI)
DropMenu в ActionBar Android
Поиск в ListView с помощью SearchView Android
Android Отследить закрытие SearchView Android
Searchview закрыть поиск программно, также как закрывается кнопкой back Android
Android Searchview в toolbar
Android Передать SearchView из активити во фрагмент
Как добавить динамически в ToolBar виджет SearchView в нужных фрагментах Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mikalai
245 / 221 / 91
Регистрация: 11.01.2015
Сообщений: 633
25.10.2016, 02:23     SearchView в ActionBar #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Renko17, j,обычно используют Toolbar вместо ActionBar'а. Его размещают в Activity. А Fragment с ним взаимодействует через компонент(Activity).

PS: хотя тут такой конструктор, что можно что хочешь, куда хочешь )
Yandex
Объявления
25.10.2016, 02:23     SearchView в ActionBar
Ответ Создать тему
Опции темы

Текущее время: 04:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru