2017-02-19 1 views
1

내 SearchActivity에서받은 ActionBar 트리거에서 내 SearchView를 생성하는 데 문제가 있습니다. logcat은 SearchActivity의 onCreate 메소드에 로그를 표시하지 않기 때문에 문제는 Manifest/XML 어딘가에 있다고 생각합니다. 나는 시도하고 구현하기 위해 theseresources 및 기타 (SO 응답 포함)를 사용했지만 운이 없었습니다.SearchView가 SearchActivity를 트리거하지 않습니다.

매니페스트 :

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 

    <activity 
     android:name=".activitiesFragments.MainActivity" 
     android:configChanges="orientation" 
     android:screenOrientation="portrait"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <meta-data android:name="android.app.default_searchable" 
      android:value=".activtiesFragments.SearchActivity"/> 

    </activity> 

    <activity 
     android:name=".activitiesFragments.LoginActivity" 
     android:label="@string/login_button_text" 
     android:screenOrientation="portrait" /> 

    <activity 
     android:name=".activitiesFragments.SignUpActivity" 
     android:label="@string/create_account_button" 
     android:screenOrientation="portrait"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value=".activitiesFragments.LoginActivity" /> 
    </activity> 

    <activity android:name=".activitiesFragments.SearchActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.SEARCH"/> 
      <category android:name="android.intent.category.DEFAULT"/> 
     </intent-filter> 
     <meta-data android:name="android.app.searchable" 
      android:resource="@xml/searchable"/> 
    </activity> 

</application> 

MainActivity :

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main_messages, menu); 

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    SearchView searchView = (android.support.v7.widget.SearchView) menu.findItem(R.id.friends_menu_item).getActionView(); 
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 

    return true; 
} 

SearchActivity 나는 내 문제를 파악

package dev.workman.shoutout.activitiesFragments; 

import android.app.ListActivity; 
import android.app.SearchManager; 
import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

import java.util.ArrayList; 

import dev.workman.shoutout.R; 

public class SearchActivity extends AppCompatActivity { 

    ArrayList<String> query_results = new ArrayList<>(); 
    ArrayAdapter<String> adapter; 
    ListView results_view; 

    String TAG = "SearchActivity"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_search); 

     results_view = (ListView) findViewById(R.id.results_list); 
     adapter = new ArrayAdapter<>(this, android.R.layout.simple_expandable_list_item_1, query_results); 
     results_view.setAdapter(adapter); 

     Log.d(TAG, "onCreate: created searchview activity"); 

     handle_intent(getIntent()); 

    } 

    @Override 
    protected void onNewIntent(Intent intent) { 
     super.onNewIntent(intent); 
     query_results.clear(); 
     handle_intent(getIntent()); 
    } 

    public void handle_intent(Intent intent) { 
     if (Intent.ACTION_SEARCH.equals(intent.getAction())) { 
      String query = intent.getStringExtra(SearchManager.QUERY); 
      Log.d(TAG, "handle_intent: query " + query); 
      // process the query, add values to the query_results adpater 
      // then call adapter.notifyDataSetChanged() 
     } 
    } 

} 

답변

0

. XML/매니 페스트 문제가 아니라 getComponentName() 호출과 관련된 문제입니다.

나는

new ComponentName(MainActivity.this, SearchActivity.class) 

로 변경하고 지금은 작동합니다. 이 문제가 다른 사람들에게 도움이되기를 바랍니다.

관련 문제