2016-05-27 12 views
0

ツールバーにカートアイコンが表示されています。カートアイコンをクリックすると、次のactivity.Butに移動するためのコードを書きましたが、クリックは機能しません。ここに私のコードです。私はそれを修正するのを助けてください。ツールバーメニューのクリックイベントが機能しない

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 

    badgeLayout = (RelativeLayout) menu.findItem(R.id.badge).getActionView();   /*-------Cart Basket with Counter---------*/ 
    mCounter = (TextView) badgeLayout.findViewById(R.id.counter); 

    CommonUtil.dbUtil.open(); 
    MainFragmentAdapter.CART_COUNT = String.valueOf(CommonUtil.dbUtil.getCartItem().getCount()); 
    MainActivity.mCounter.setText(MainFragmentAdapter.CART_COUNT); 

    invalidateOptionsMenu(); 

    badgeLayout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Config.menuItemClicked = true; 
      SharedPreferences.Editor editor = CommonUtil.pref.edit(); 
      editor.putBoolean("cart_Clicked", Config.menuItemClicked); 
      editor.apply(); 
      Intent next = new Intent(context, ProductActivity.class); 
      startActivity(next); 
     } 
    }); 
    return super.onCreateOptionsMenu(menu); 
} 
+0

レイアウトをクリック可能にしましたか? –

+0

ActionItemを取得するには、MenuItemCompat.getActionView(menu.findItem(R.id.badge))を使用します。ビューを返します。 –

+0

はいレイアウトをクリック可能にしました@FrederickEskens –

答えて

-1

android:clickable="true"をXMLに定義してレイアウトをクリックできるようにしてください。

0

はこれを試してみました:

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      //... 
     } 
     return super.onOptionsItemSelected(item); 
    } 
+0

私は試しましたが、うまくいきませんでした。 –

0

変更コードにします。

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 

    badgeLayout = (RelativeLayout) menu.findItem(R.id.badge).getActionView();   /*-------Cart Basket with Counter---------*/ 
    //instead of the above code try 
    View badgeLayoutView=MenuItemCompat.getActionView(menu.findItem(R.id.badge)); 
    mCounter = (TextView) badgeLayout.findViewById(R.id.counter); 

    CommonUtil.dbUtil.open(); 
    MainFragmentAdapter.CART_COUNT =String.valueOf(CommonUtil.dbUtil.getCartItem().getCount()); 
    MainActivity.mCounter.setText(MainFragmentAdapter.CART_COUNT); 

    invalidateOptionsMenu(); 

    //set the onClick listener to badgeLayoutView 
    badgeLayoutView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Config.menuItemClicked = true; 
      SharedPreferences.Editor editor = CommonUtil.pref.edit(); 
      editor.putBoolean("cart_Clicked", Config.menuItemClicked); 
      editor.apply(); 
      Intent next = new Intent(context, ProductActivity.class); 
      startActivity(next); 
     } 
    }); 
    return super.onCreateOptionsMenu(menu); 
} 

メニュービューのXMLファイルでアクションビューを非表示に設定していることを確認してください。 app:actionLayout

<item 
    android:title="Badge" 
    android:id="@+id/badge" 
    app:actionLayout="@layout/your_action_layout" 
    app:showAsAction="ifRoom"/> 
+0

申し訳ありませんが働いていません –

関連する問題