0

トップメニューバーに残高のあるウォレットアイコンを作成したアプリケーションを作成しています! 私は私の好みからバランスを取り戻します!! しかし、サーバーから残高の新しい更新を取得するたびに、メニュー アイコンの残高を更新する必要があります。どうすればそれを達成できますか?

私はfirebaseを使用しており、サーバーからアクティビティにデータを取得でき、優先的に保存できます! しかし、3つのドットをクリックしない限り、メニューアイコンを更新できません! または活動の変化!クリックも何もせずにメニューを更新するにはどうすればよいですか

私のメニューコードは次のとおりです。

@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);
        MenuItem item = menu.findItem(R.id.badge);
        MenuItemCompat.setActionView(item, R.layout.feed_update_count);
        RelativeLayout layout = (RelativeLayout) MenuItemCompat.getActionView(item);
        mytext = (TextView) layout.findViewById(R.id.hotlist_hot);
        mytext.setText(String.valueOf(prefs.getString("wallet_amount","0")));
        layout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(Topup.this, "Clicked",Toast.LENGTH_LONG).show();
            }
        });
        return super.onCreateOptionsMenu(menu);
    }

@Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        MenuItem item = menu.findItem(R.id.badge);
        MenuItemCompat.setActionView(item, R.layout.feed_update_count);
        RelativeLayout layout = (RelativeLayout) MenuItemCompat.getActionView(item);
        mytext = (TextView) layout.findViewById(R.id.hotlist_hot);
        mytext.setText(String.valueOf(prefs.getString("wallet_amount","0")));
        layout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Topup.this,BankActivity.class);
                startActivity(intent);
            }
        });
        return super.onPrepareOptionsMenu(menu);

    }

onResume 関数のメニューも更新する必要があります

UPDATE Android - onOptionsItemsSelected または onCreateOptionsMenu の外でメニュー項目のテキストを動的に変更する方法

アップデート

リンクからの回答に従って、別の機能を使用しました:

private void updateMenuTitles() {
        MenuItem item = menu.findItem(R.id.badge);
        MenuItemCompat.setActionView(item, R.layout.feed_update_count);
        RelativeLayout layout = (RelativeLayout) MenuItemCompat.getActionView(item);
        mytext = (TextView) layout.findViewById(R.id.hotlist_hot);
        mytext.setText(String.valueOf(prefs.getString("wallet_amount","0")));
    }

OnResume 関数 i はサーバーから金額の値を更新し、自分の金額を参照に更新し、データが設定に追加されます

履歴書機能

@Override


       public void onResume(){
            super.onResume();

            getAmount(); //Updates amount to preference variable wallet_amount here
            updateMenuTitles(); //Calling this function to update the textview in menu
            invalidateOptionsMenu();

        }

アプリケーション強制終了 updateMenuTitles

メニュー XML :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:gravity="center"
    android:layout_gravity="center"
    android:clickable="true"
    style="@android:style/Widget.ActionButton">

    <ImageView
        android:id="@+id/hotlist_bell"
        android:src="@drawable/wallet"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:gravity="center"
        android:layout_margin="0dp"
        android:contentDescription="bell"
        />

    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/hotlist_hot"
        android:layout_width="wrap_content"
        android:minWidth="20sp"
        android:textSize="16sp"
        android:textColor="#ffffffff"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="1221"
        android:layout_alignTop="@id/hotlist_bell"
        android:layout_marginLeft="7dp"
        android:layout_marginTop="-3dp"
        android:paddingBottom="4dp"
        android:paddingRight="6dp"
        android:paddingLeft="6dp"
        android:background="@drawable/rounded_square"
        android:paddingTop="4dp"
        android:textStyle="normal|bold" />
</RelativeLayout>

メニュー:

<menu xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/badge"
        android:actionLayout="@layout/feed_update_count"
        android:icon="@drawable/shape_notification"
        android:title=""
        app:showAsAction="always" />
    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="@string/action_settings"
        app:showAsAction="never" />
    <item
        android:id="@+id/action_transaction"
        android:orderInCategory="100"
        android:title="@string/action_transactions"
        app:showAsAction="never" />
    <item
        android:id="@+id/action_pref"
        android:orderInCategory="100"
        android:title="Log out"
        app:showAsAction="never" />
</menu>
4

0 に答える 0