2017-10-12 4 views
0

あなたのお手伝いをしてくれてありがとうございました。私はここで非常に基本的なものが欠けているかもしれませんが、カスタムレイアウトで作成されたメニュー項目にイメージをロードする方法を数時間試していました。あなたのうちの誰かが私にそれを助けてくれるかな?私は..公式ドキュメントに及び、そのようなこれらCustom view for Menu Itemけどとしてポストにチェックされているカスタムレイアウトで作成したメニュー項目を取得して入力する方法は?

私onCreateOptionsMenu OND OnPrepareOptionsMenu

@Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 
     final MenuItem alertMenuItem = menu.findItem(R.id.action_my_personal); 
     FrameLayout rootView = (FrameLayout) alertMenuItem.getActionView(); 

     redCircle = (FrameLayout) rootView.findViewById(R.id.view_alert_red_circle); 
     countTextView = (TextView) rootView.findViewById(R.id.view_alert_count_textview); 
     ImageView hc_image_menu_inflated = (ImageView) rootView.findViewById(R.id.hc_image_menu); 

     rootView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       onOptionsItemSelected(alertMenuItem); 
      } 
     }); 


     if (menu.findItem(R.id.hc_image_menu) != null) { 
      loadMenuIcon(menu.findItem(R.id.hc_image_menu), my_image_url); 
     } 

     return super.onPrepareOptionsMenu(menu); 
    } 

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

     return true; 
    } 

あなたは私がアプリのクラッシュを避けるために、これらの行を追加して見ることができるようだ

、などmenu.finditem(R.id.hc_image_menu)はnullとして戻っていると、問題がどこにあるか私はID hc_image_menuを持っていますが、非常に多くの試み

if (menu.findItem(R.id.hc_image_menu) != null) { 
     loadMenuIcon(menu.findItem(R.id.hc_image_menu), my_image_url); 
    } 
01にもかかわらず、成功しているわけではないImageViewのを移入したいと、それは、です私 toolbar_main_menuレイアウトはこれであるため

私のコード:

<item 
     android:id="@+id/action_my_personal" 
     app:actionLayout="@layout/toolbar_menu_hc" 
     android:orderInCategory="100" 
     android:title="My Personal Trainer" 
     app:showAsAction="always" /> 

そして、私のカスタムレイアウト(toolbar_hc_menu)のためにはこの1つである:

<FrameLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="48dp" 
android:layout_height="32dp" 
android:layout_gravity="center"> 


<ImageView 
    android:id="@+id/hc_image_menu" 
    android:layout_marginRight="8dp" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:src="@drawable/gavin"/> 

<FrameLayout 
    android:id="@+id/view_alert_red_circle" 
    android:layout_width="14dp" 
    android:layout_height="14dp" 
    android:layout_gravity="top|end" 
    android:background="@drawable/date_circle" 
    android:visibility="gone" 
    tools:visibility="visible"> 

    <TextView 
     android:id="@+id/view_alert_count_textview" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:textColor="@color/white" 
     android:textSize="10sp" 
     tools:text="3"/> 

</FrameLayout> 

任意のための非常にありがとうをそれに助けてください。本当にありがとう! :)

+0

hc_image_menuはメニュー項目ではありません。 – nomag

+0

こんにちは@nomagご返信ありがとうございます。はい、私は知っていますが、hc_image_menuイメージビューに関連付けられている適切なメニュー項目を取得する方法を知らないだけですか?再度、感謝します! –

+0

既にmenuItem:alertMenuItemがあります。ではない ? – nomag

答えて

1

問題が修正されました。 :) 最後に、alertMenuItemを取得した後、ImageViewにイメージをロードするだけでした。

if (my_image_url!= null) { 
     Picasso.with(getApplicationContext()).load(my_image_url).into(hc_image_menu_inflated); 
    } 
関連する問題