0

メソッドでアクションバーのアイコンをプログレスバーに変更してみましたonOptionsItemSelected(MenuItem)

    public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        return true;
    case R.id.progressitem2:
        mProgress = item;
        mProgressCreate = mProgress;
        mProgress.setActionView(R.layout.progress);
        mLayout.removeView(mTable);
        // Execute code that change mTable again.
        return true;
    }

progress.xml ファイル:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:addStatesFromChildren="true"
              android:focusable="true"
              android:paddingLeft="4dp"
              android:paddingRight="4dp"
              android:gravity="center" >
    <ProgressBar
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:focusable="true"
            style="@android:style/Widget.ProgressBar.Small"/>

</LinearLayout> 

アクション バーは次のように作成されます。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.actionbar, menu);
    mProgress = menu.getItem(0);
    mProgressCreate = mProgress;
    return true;
}

action_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:id="@+id/progressitem2" 
            android:icon="@drawable/ic_action_refresh"
            android:title="Reload"
            android:showAsAction="ifRoom|withText"
            android:visible="true" />
</menu>

これはうまくいきます。アクションバーアイコンをクリックすると進行状況アイコンが表示されます。

元のアクション バー シンボルの参照を維持し、メソッドmProgressCreateの最後にアクション ビューを追加しようとしています。onCreate()

mProgress.setActionView(mProgressCreate.getActionView());

しかし、これは機能しません...

ここで何が問題なのですか?

よろしく、サンドロ

4

1 に答える 1

0

解決策を見つけました。invalidateOptionsMenu()アクションビューをリセットする前に呼び出すのを忘れただけですmProgress.setActionView(mProgressCreate.getActionView());

invalidateOptionsMenu();
mProgress.setActionView(mProgressCreate.getActionView());

そして、すべてが正常に機能しています:-)。

于 2012-09-20T07:27:25.843 に答える