2017-03-01 50 views
2

我刚刚创建了一个工具栏图标有这一样 Sample如何设置onclick事件为

我想这个黑色的图标点击 在工具栏中的图标,这是我menu.xml文件文件

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <item android:id="@+id/searchicon" 
     android:icon="@drawable/search" 
     android:title="@string/search" 
     app:showAsAction="always"/> 

    <item android:id="@+id/listicon" 
     android:icon="@drawable/list_view" 
     android:title="@string/listview" 
     app:showAsAction="always"/> 

    <item android:id="@+id/gridicon" 
     android:icon="@drawable/table_grid" 
     android:title="@string/gridview" 
     app:showAsAction="always"/> 
</menu> 

这是我的活动包含有图标

package abtech.waiteriano.com.waitrer; 

import android.os.Build; 
import android.os.Bundle; 
import android.support.annotation.RequiresApi; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.GridView; 
import android.widget.ImageView; 
import android.widget.Spinner; 
import android.widget.Toast; 

import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.ArrayList; 

import abtech.waiteriano.com.waitrer.adapters.CustomMenuGridViewAdapter; 
import abtech.waiteriano.com.waitrer.connection_class.ConnectionClass; 
import abtech.waiteriano.com.waitrer.getters_and_setters.MenuItem; 

public class MenuActivity extends AppCompatActivity { 
    private android.support.v7.widget.Toolbar toolbar; 
    private ArrayList<String> category ; 
    GridView menuGridView; 

    static ArrayList<MenuItem> menuGridArray = new ArrayList<MenuItem>(); 
    CustomMenuGridViewAdapter customMenuGridViewAdapter; 

    ImageView listIcon, gridIcon; 

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_menu); 

     menuGridView = (GridView) findViewById(R.id.menuGridView); 
     customMenuGridViewAdapter = new CustomMenuGridViewAdapter(MenuActivity.this, R.layout.menu_row_grid, menuGridArray); 
     menuGridView.setAdapter(customMenuGridViewAdapter); 
     String menugridSTR = "Select ID,Code,Name,Name2 From Presets Where Active = 1 And Rest_ID_Active = 1 AND OutLet_ID_Active = 1 ORDER BY Code"; 
     ResultSet rs = ConnectionClass.Ret_RS(menugridSTR); 
     menuGridArray.clear(); 
     try { 
      while (rs.next()) { 
       menuGridArray.add(new MenuItem(rs.getString("Name"))); 
      } 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 

     listIcon = (ImageView) findViewById(R.id.listicon); 
     gridIcon = (ImageView) findViewById(R.id.gridicon); 
     category = new ArrayList<String>() ; 
     String str = "Select ID,Code,Name,Name2 From Presets Where Active = 1 And Rest_ID_Active = 1 AND OutLet_ID_Active = 1 ORDER BY Code"; 
     rs = ConnectionClass.Ret_RS(str); 
     try { 
      while (rs.next()) { 
       category.add(rs.getString("Name")); 
      } 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayShowTitleEnabled(false); 
     Spinner navigationSpinner = new Spinner(getSupportActionBar().getThemedContext()); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, category); 
     navigationSpinner.setAdapter(adapter); 
     toolbar.addView(navigationSpinner, 0); 

     navigationSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       Toast.makeText(MenuActivity.this, 
         "you selected: " + category.get(position), 
         Toast.LENGTH_SHORT).show(); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 

      } 
     }); 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.iconmenu, menu); 
     return true; 
    } 
} 

我将使用的OnCreate选项菜单工具栏,如果是的话,我怎么能,使用T他, 对不起,如果,如果有任何意见请只需要加一个注释

+1

你只需要''override' onOptionsItemSelected' –

回答

3

覆盖的方法onOptionsItemSelected

这样的:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle item selection 
    switch (item.getItemId()) { 
     case R.id.searchicon: 
      //do something 
      return true; 
     case R.id.listicon: 
       //do something 
      return true; 
     case R.id.gridicon: 
       //do something 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

更多here

3

处理click事件在menu发生任何事情不清楚,你必须覆盖的ActivityonOptionsItemSelected方法,像这样:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()) { 
     case R.id.searchicon: 
      // ... 
      return true; 
     case R.id.listicon: 
      // ... 
      return true; 
     case R.id.gridicon: 
      // ... 
      return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
3

只是覆盖的方法:

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.action_reset: 
       // your action 
       break; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
相关问题