2016-04-27 6 views
0

Dies ist die Hauptaktivität meiner App. Von der Hauptaktivität aus kann ich zu einer Artikellistenaktivität navigieren, indem ich irgendeine der Kategorien aus der RecyclerView-Liste auswähle. Außerdem muss ich zu der gleichen Artikellistenaktivität gehen, indem ich den Gegenstandsnamen direkt in android SearchView Widget in der Werkzeugleiste suche. Ich schrieb den Code für Suche wie dieseWie Start neue Aktivität durch Absicht von Android SearchView Widget Abfrage einreichen

public boolean onCreateOptionsMenu(Menu menu) 
    { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.app_bar_item, menu); 

     /*final MenuItem item = menu.findItem(R.id.search); 
     final SearchView searchView = (SearchView) MenuItemCompat.getActionView(item); 
     searchView.setOnQueryTextListener(this);*/ 

     SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
     SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView(); 
     if (null != searchView) 
     { 
      searchView.setSearchableInfo(searchManager 
        .getSearchableInfo(getComponentName())); 
      searchView.setIconifiedByDefault(true); 
     } 

     SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() { 
      @Override 
      public boolean onQueryTextSubmit(String query) 
      { 
       Log.d("TAG","You queried for="+query); // Here it prints correct query input. but doesnot starting the new activity. 
       Intent intent3 = new Intent(getApplicationContext(),ItemListActivity.class); 
       intent3.putExtra("FetchType","ItemSearch"); 
       intent3.putExtra("CatId",query); 
       return true; 
      } 

      @Override 
      public boolean onQueryTextChange(String newText) { 
       return false; 
      } 
     }; 

     searchView.setOnQueryTextListener(queryTextListener); 
     return super.onCreateOptionsMenu(menu); 
    } 


/*And i accept both the navigations from main activty(By selecting Category list item, or by inputing hint in search widget) in my list item activity like:*/ 

    Bundle extras=getIntent().getExtras(); 
     if(extras!=null) 
     { 
      fetch_hint = extras.getString("FetchHint"); /* Fetch hint is Category name selected or Searchquery input.*/ 
      fetch_type = extras.getString("FetchType"); /* if activity start from category item selection, Fetch type is set as ByCat, If it is from searchview set as ItemSearch*/ 
     } 

Es funktioniert für Nach Kategorie suchen, aber würde nicht für Search. Bitte hilf mir. Vielen Dank im Voraus

Antwort

0

startActivity wird nicht aufgerufen. Der Anwendungskontext kann nicht zum Starten der Aktivität verwendet werden.

Intent intent3 = new Intent(MainActivity.this,ItemListActivity.class); 
      intent3.putExtra("FetchType","ItemSearch"); 
      intent3.putExtra("CatId",query); 
startActivity(intent3); 
+0

Vielen Dank. Es funktioniert gut –

+0

@shafeeq bitte akzeptieren Sie die Antwort – USKMobility

0

Ändern Sie den Code unten wie:

/*final MenuItem item = menu.findItem(R.id.search); 
    final SearchView searchView = (SearchView) MenuItemCompat.getActionView(item); 
    searchView.setOnQueryTextListener(this);*/ 

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView(); 
    if (null != searchView) 
    { 
     searchView.setSearchableInfo(searchManager 
       .getSearchableInfo(getComponentName())); 
     searchView.setIconifiedByDefault(true); 
    } 

    SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) 
     { 
      Log.d("TAG","You queried for="+query); // Here it prints correct query input. but doesnot starting the new activity. 
      Intent intent3 = new Intent(getApplicationContext(),ItemListActivity.class); 
      intent3.putExtra("FetchType","ItemSearch"); 
      intent3.putExtra("CatId",query); 
      startActivity(intent3); 
      return true; 
     } 

     @Override 
     public boolean onQueryTextChange(String newText) { 
      return false; 
     } 
    }; 

    searchView.setOnQueryTextListener(queryTextListener); 
    return super.onCreateOptionsMenu(menu); 
} 
0

Ersetzen Sie diesen Code

  Intent intent3 = new Intent(YourActivityName.this,ItemListActivity.class); 
     // instead of getApplicationContext use yourActivityName.this 
     intent3.putExtra("FetchType","ItemSearch"); 
     intent3.putExtra("CatId",query); 
     startActivity(intent3); <------------ here is you are missing this  
               line 
Verwandte Themen