이 작은 테스트 응용 프로그램을 작성하여 사용자가 검색 버튼을 눌렀을 때 검색 가능한 활동이 시작되지 않음을 보여줍니다 키보드.Android 지원 검색 : 검색 버튼이 검색 가능한 활동을 호출하지 않음 (다른 솔루션이 도움이되지 않음)
나는 developer guides을 따라 왔지만 웹 검색에서 은 공식 개발자 가이드에서 몇 가지 사항을 빠뜨린 것으로 나타났습니다. 내 SO (도움이되지 않았다) 검색: 매니페스트에서 요소에 태그를 추가하여 해결
Reference 1:. 또한 샘플 "사용자 사전"의 매니페스트를 조사했습니다 (어디서 샘플을 온라인으로 찾을 수 있는지 또는 링크 할 수 있는지 모르겠습니다). 이 태그는 응용 프로그램 요소에 있습니다.
Reference 2:/XML/searchable.xml는 문자열 리소스에 대한 참조하지 하드 코딩 된 문자열이어야 고해상도에서 : "힌트 안드로이드" "안드로이드 라벨"와. 내 것이.
Reference 3: 으로 태그를 추가 의 매니페스트 : "(값 ="< 검색 활동 이름>. "" 로이드 "로이드 NAME ="android.app.default_searchable "및") 검색이 시작될 곳의 활동입니다. 시도한 이 작동하지 않는 것 같습니다.
Reference 4: "검색 가능한 작업은 무언가를해야하며 은 실제로 결과를 표시해야합니다." 광산은 ACTION_SEARCH 동작으로 의도를 수신하고 검색된 검색 쿼리 문자열을 "performSearch (string)"메서드에 전달합니다.이 메서드는 문자열을 텍스트 뷰에 표시합니다.
는 그래서 어떻게 내가 잘못하고있는 중이 야, 나는이 문제를 해결하기 위해 무엇을 할 수 있는가?
코드 :MainActivity.java이 - 하나의 SearchView을 가지고 - 사용자가 쿼리를 입력하고 키보드의 검색 버튼을 누른다.
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
TestTwoActivity.java
public class TestTwoActivity extends Activity {
TextView tv;
private static final String TAG = TestTwoActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_two);
/**
* The following code enables assisted search on the SearchView by calling setSearchableInfo() and passing it our SearchableInfo object.
*/
SearchView searchView = (SearchView) findViewById(R.id.searchActivity_searchView);
// SearchManager => provides access to the system search services.
// Context.getSystemService() => Return the handle to a system-level
// service by name. The class of the returned object varies by the
// requested name.
// Context.SEARCH_SERVICE => Returns a SearchManager for handling search
// Context = Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android
// system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching
// activities, broadcasting and receiving intents, etc.
// Activity.getComponentName = Returns a complete component name for this Activity
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
/**
* If the search is executed from another activity, the query is sent to this (searchable) activity in an Intent with ACTION_SEARCH action.
*/
// getIntent() Returns the intent that started this Activity
Intent intent = getIntent();
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
Log.i(TAG, "Search Query Delivered");//check
String searchQuery = intent.getStringExtra(SearchManager.QUERY);
performSearch(searchQuery);
}
}
private void performSearch(String searchQuery) {
//Just for testing purposes, I am simply printing the search query delivered to this searchable activity in a textview.
tv = (TextView) findViewById(R.id.testTwoActivity_textView);
tv.setText(searchQuery);
}
}
입술/XML/검색.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/searchViewHint" >
</searchable>
매니페스트 파일
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tests"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />
<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>
</activity>
<activity
android:name=".TestTwoActivity"
android:label="@string/title_activity_test_two" >
<intent-filter>
<action android:name="android.intent.action.SEARCH"/> <!-- Declares the activity to accept ACTION_SEARCH intent -->
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" /> <!-- Specifies the searchable configuration to use -->
</activity>
<!-- Points to searchable activity so the whole app can invoke search. -->
<meta-data android:name="android.app.default_searchable"
android:value=".TestTwoActivity" />
</application>
</manifest>
레이아웃 :
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.tests.MainActivity" >
<android.support.v7.widget.SearchView
android:id="@+id/searchActivity_searchView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
activity_test_two.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >
<android.support.v7.widget.SearchView
android:id="@+id/searchActivity_searchView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/testTwoActivity_textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
편집 1 : 그것은 내가 완벽하게 작동 검색 dilogue 대신 검색 위젯과 유사한 응용 프로그램을 쓴 미친 짓이야.
이클립스에서 디버깅을 시도했으나 TestTwoActivity
(검색 가능한 작업)이 단순히 시작되지 않기 때문에 디버깅이 중지됩니다. 보조 노트로
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SearchView searchView = (SearchView) findViewById(R.id.searchActivity_searchView);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
}
:
내가 문제를 했어 당신이 그것을 추가 잊어 버린하지만 SearchView
에 검색 정보를 설정하여 MainActivity
미스 경우
나는 그것을 잊고 있었던 나는, 내 나쁜 시간 내 코드 수백 보았지만이 표시되지 않았에 (맛 생략)의 전체 경로를 사용하는 경우에만 작업에 보였다. 고맙습니다. – Solace