让我给你一个简短的场景。
我想在我的操作栏上有一个刷新按钮,它在加载某些东西时切换到 indeterminateProgressStyle (一个旋转的圆圈)。
在我的项目中,我有以下布局。(例如 res/layout/actionbar_indeterminate_progress.xml)
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center">
<ProgressBar android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:layout_gravity="center"
style="?android:attr/indeterminateProgressStyle" />
</FrameLayout>
当用户单击刷新按钮时,我执行以下操作。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.main, menu);
refreshMenuItem = menu.findItem(R.id.menu_refresh);
if (refreshMenuItem != null) {
// Show refresh button if we are in action bar mode, but only if
// there's something to be refreshed
boolean selectedItemExists = (getCurrentBrowsingContainer() != null);
refreshMenuItem.setVisible(selectedItemExists);
if (is_spinner_running) {
refreshMenuItem.setActionView(R.layout.actionbar_indeterminate_progress);
} else {
refreshMenuItem.setActionView(null);
}
}
return super.onCreateOptionsMenu(menu);
}
我的 res/menu/main.xml 也如下所示。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
...
<item android:id="@+id/menu_refresh" android:icon="@drawable/ic_menu_refresh" android:showAsAction="always" android:title="@string/refresh" />
<item android:id="@+id/menu_search" android:title="@string/menu_search" android:icon="@android:drawable/ic_menu_search" android:showAsAction="never" />
<item android:id="@+id/settings" android:title="@string/settings" android:icon="@android:drawable/ic_menu_preferences"></item>
<item android:id="@+id/exit" android:title="@string/exit" android:icon="@android:drawable/ic_menu_close_clear_cancel"></item>
...
</menu>
问题是,例如,我以纵向开始我的活动并点击刷新按钮,它很好地停止了。现在我旋转它并再次点击刷新按钮,但现在它出于某种原因继续显示不确定的进度。我检查了, refreshMenuItem.setActionView(null) 被调用,但它仍然继续显示不确定的东西。现在,由于某种原因,refreshMenuItem 似乎不可见,因为当我单击不确定的进度时,没有调用 onOptionsItemSelected。
所以我尝试了一个不同的示例应用程序,它可以完美运行,没有任何问题。所以我想知道我哪里出错了。任何指针都会有所帮助。