2016-03-31 6 views
0

表示する大学のリストを表示しているので、詳細なページに行く大学をクリックしてください。そこに通知のメニューバーとFavourite_iconがあります。私はFavourite_iconFavourite_icon1を持っています。ユーザーがfavourite_iconをクリックしてサーバーに保存され、アイコンがFavourite_icon1に変更された場合。いくつかのプロセスを経た後、私はFavourited大学を訪れました。メニューバーにFavourite_icon1が表示されるはずです。私は次の方法を試みたが、何も起こらない。私は私がしようとしているコードを追加した最初にサーバーの応答に応じてメニューバーのアイコンを設定する方法

これは大学が既にonCreate()でお気に入り化(favourited)するかしないwheatherチェックするためのコードで

private boolean canAddItem; 

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

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

     switch (item.getItemId()) { 
      case R.id.action_notify: 
       navigatetoNotification(); 
       return true; 
      case R.id.action_favourite: 
       if (item.getItemId() == R.id.action_favourite) { 
        invalidateOptionsMenu(); 
        favouriteClg(); 
       } 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    @Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 

     if (canAddItem) { 
      menu.getItem(1).setIcon(R.drawable.vijay); 
      canAddItem = false; 
      favouriteClg(); 
     } else { 
      menu.getItem(1).setIcon(R.drawable.favourite_icon); 
      canAddItem = true; 
      favouriteClg(); 
     } 

     return super.onPrepareOptionsMenu(menu); 
    } 

menu_clg.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:appmunu="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context=".UserDashBoardFragment"> 
    <item 
     android:id="@+id/action_notify" 
     android:icon="@drawable/mail_icon" 
     appmunu:showAsAction="always" 
     android:title="Notification" /> 
    <item 
     android:id="@+id/action_favourite" 
     android:icon="@drawable/icon_selector" 
     appmunu:showAsAction="always" 
     android:title="Favourite" /> 
</menu> 

このアクティビティコード方法

public void chechFavourite() { 
       new AsyncTask<Void, Void, String>() { 
        @Override 
        protected String doInBackground(Void... arg0) { 
         //method name changed here 
         //getAllEventFromUser method used for getting all previously send events of current user 

         return favouriteDelegates.getAllCollegeDetails(userMO, context); 
        } 

        @Override 
        protected void onPostExecute(String collegelists) { 

         if (collegelists != "null") { 
          initCollegeMO = gson.fromJson(collegelists, new TypeToken<InitCollegeMO>() { 
          }.getType()); 
          collegeMOs = initCollegeMO.getCollegeMOs(); 
          for (CollegeMO collegeMO1 : collegeMOs) { 
           //here the list of college has eceived from server so i checked all the college id with current college id 
           collegeId = collegeMO1.getCollegeId();       //here collegeMO isthe object which is accessed by parcelable from another activity 
           if (collegeMO.getCollegeId() == collegeId) { 
            canAddItem = true; 

           } else { 
            canAddItem = false; 

           } 
          } 
         } else { 
          canAddItem = false; 

         } 
        } 
       }.execute(null, null, null); 
      } 
     } 

答えて

0

希望のコードはyoに役立つはずですu。

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.actionbar, menu); 
    userItem = menu.findItem(R.id.userItem); 

    return menu; 
} 

編集1:プログラム的にメニューを更新します 方法。

private void updateMenuTitles() { 
    if(isFavorite){ 
    userItem.setIcon(new BitmapDrawable(getResources(), favoriteBitmap)); 
    }else{ 
    userItem.setIcon(new BitmapDrawable(getResources(), unFavoriteBitmap)); 
    } 
    invalidateOptionsMenu();  
} 

希望すると、これが役に立ちます。

+0

i)は、私は私が(このupdateMenuTitlesを追加する必要があります編集1 –

+0

@vijayg favourite_iconそうfavourite_icon1を設定する必要がお気に入り化(favourited)場合は、そのはすでにお気に入りのかそうでないwheatherチェックする必要があり、私の描画可能にイメージを持っています方法。 oncreate()で? –

+0

をチェックし、 –

0

MenuItemランタイムのタイトルを変更し、そのタイトルに従ってクリックイベントを管理できます。

このコードを参照すると、あなたに役立ちます。 APIから返信を受けてupdateMenuTitles()に電話をかけ、タイトルを変更することができます。

private Menu 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.menu_main, menu); 
     // Create your menu... 
     this.menu = menu; 

     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

     switch (item.getItemId()) { 
      case R.id.action_favourite: 
       if (item.getTitle().equals("favourite")) { 
        //Alerady Favourite, make it unfavourite 
        MenuItem.setTitle("un-favourite"); 
        // do what you want 
       } 
       else if(item.getTitle().equals("un-favourite")){ 
        // un-favourite, make it favourite 
        MenuItem.setTitle("favourite"); 
        // do what you want 
       } 
       return true; 


     } 

     return super.onOptionsItemSelected(item); 
    } 

    /* 
    Update title of your menuItem whenever you want 
    */ 
    private void updateMenuTitles() { 
     MenuItem MenuItem = menu.findItem(R.id.action_favourite); 
     if (MenuItem.getTitle().equals("favourite")) { 
      //Alerady Favourite, make it unfavourite 
      MenuItem.setTitle("un-favourite"); 
     } 
     else if(MenuItem.getTitle().equals("un-favourite")){ 
      // un-favourite, make it favourite 
      MenuItem.setTitle("favourite"); 
     } 
    } 
+0

mアンケートを理解してください@Anju Sharma –

関連する問題