2016-05-08 12 views
0

私はメニュー項目で活動しています。ユーザーがこのアクティビティに来るたびに、私はtextViewの値をいくつかのユーティリティ値で更新したいと思います。これは私のコードです。androidのメニュー項目を更新するには

@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_my2, menu); 
    return true; 
} 

@Override 
public boolean onPrepareOptionsMenu(Menu menu){ 
    RelativeLayout badgeLayout = (RelativeLayout) menu.findItem(R.id.badge).getActionView(); 
    TextView tv = (TextView) badgeLayout.findViewById(R.id.actionbar_notifcation_textview); 
    tv.setText(String.valueOf(Utility.ShoppingCartItemCount())); 
    return true; 
} 

これは、(アクティビティの起動時に)値を1回だけ更新しています。しかし、ユーザーがこのアクティビティから移動してこのアクティビティを再度実行すると、これは更新されず、Utility.ShoppingCartItemCount()の値も更新されます。

これを解決するにはどうすればよいですか?

+0

'Utility.ShoppingCartItemCount())'は何を返しますか?毎回異なる価値を提供していますか?なぜなら、いつもメニューが表示されているときは、 'onPrepareOptionsMenu'が呼び出されるからです。更新されたテキストが表示されない場合は、チェックする必要があります。 – AADProgramming

+0

@Deveshチェック 'Utility.ShoppingCartItemCount()'は、あなたのメインアクティビティに戻っても保持されます。もしそうなら、アクティビティの 'onResume'メソッドで' TextView'のテキストを変更してください。 – ELITE

答えて

4

は、これが再びonCreateOptionsMenu(メニュー)を呼び出します

invalidateOptionsMenu()を試してみてください。

編集

私のユーザーがボタンのOnClickListenerでcurrentPageに= 8後)invalidateOptionsMenuを(入れ、他のボタンをクリックすると、私は

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    if (currentPage == 8) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu_p, menu); 
     return true; 
    } else { 
     return false; 
    } 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.purchaseRestore: 
      // TODO: Restore purchase 
      return true; 
     case R.id.purchaseTerm: 
      // TODO: Show Term by WebView 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

以下のようないくつかのコードを持っています。その結果、オプションメニューを表示することができます。

編集))

invalidateOptionsMenu()はonCreateOptionsMenuとonPrepareOptionsMenuをリロードします。

この方法ではうまくいかない場合は、Utility.ShoppingCartItemCount()をデバッグしてみてください。

+0

あなたはそれを自分で試しましたか?それは働いたのですか? OPが検証できるように、あなたの作業コードをAnswerとして投稿することができます。さもなければ、あなたの現在の投稿は答えとしてあまり有用ではなく、もっとコメントになります。 – AADProgramming

+0

ええ、私は私のプロジェクトでそのコードを試してみます。私はそれに作業コードを追加します。 – WindSekirun

関連する問題