검색 막대를 만들려고하고 http://developer.android.com/training/search/setup.html에서 자습서를 따랐습니다. 작동하지 않고 SearchResultsActivity가 호출되지 않아 즉시 다음 질문을 발견했습니다. Search widget on action bar doesn't trigger my search activity. 그러나 거기에 나열된 솔루션 (특히 AndroidManifest.xml에 메타 데이터를 추가하고 xml/searchable.xml의 문자열에 대한 참조를 사용)은 내 문제를 해결하지 못합니다. 또한 AndroidManifest.xml의 <activity>
에 메타 데이터를 넣으려고 시도했지만 수많은 다른 솔루션을 사용할 수 없었습니다.작업 표시 줄에서 검색이 검색 활동을 호출하지 않습니다.
내가 뭘 잘못하고 있니?
여기 내 코드입니다 :
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="com.jsondataparser.app.MainActivity" >
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never" />
<item android:id="@+id/search_menu"
android:title="@string/app_name"
android:icon="@drawable/ic_launcher"
android:showAsAction="collapseActionView|ifRoom"
android:actionViewClass="android.widget.SearchView" />
</menu>
XML/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/app_name">
</searchable>
의 AndroidManifest.xml :
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data android:name="android.app.default_searchable" android:value=".SearchResultsActivity" />
<activity
android:name="com.jsondataparser.app.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="com.jsondataparser.app.SearchResultsActivity">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
MainActivity. java :
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
// Associate searchable configuration with the SearchView
SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.search_menu).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
return true;
}
SearchResultsActivity.java : 당신의 AndroidManifest를에 <activity>
내부도
<meta-data android:name="android.app.default_searchable"
android:value=".SearchResultsActivity" />
public class SearchResultsActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d("SearchResultsActivity", "onCreate called");
handleIntent(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
handleIntent(intent);
Log.d("SearchResultsActivity", "onNewIntent called");
}
private void handleIntent(Intent intent) {
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
Log.d("SearchResultsActivity", query);
}
}
}
감사합니다.하지만 이미 시도했습니다. – VolenD
AndroidManifest.xml의 SearchResultsActivity는 입니다. <카테고리 로이드 이름 ="android.intent.category.DEFAULT "/> 텐트 필터> \t \t \t <메타 데이터 \t \t \t \t 로이드 이름 ="android.app .searchable "android : resource ="@ xml/searchable "/> ' 잘못된 형식의 경우 죄송합니다. –
감사합니다. 이것이 도움이되었습니다. 그래서, ''은' '와'' : name = "android.app.searchable"android : resource = "@ xml/searchable"/>'. –
VolenD