我正在通过以下代码设置操作栏和项目,并显示相应的 image1。当用户点击显示书签屏幕操作项时,它会转到其他 Activity 。在该 Activity 中,我希望在 SHOW BOOKMARK SCREEN 的位置显示另一个项目(SELECT BOOKMARK TYPE)。所以我正在考虑通过将各个事物设置为真或假来使用抽象类来管理它,如下所示。但是现在我无法得到两件事。
1)
如何区分两个操作项的 case 0?因为我正在用另一个替换操作项。
2)
如何获取 SELECT BOOKMARK TYPE 的下拉列表,如 image 2 中所示。
看过的帖子很少,但由于我对 android 有点陌生,我无法理解并通过将额外的代码添加到我现有的代码中来完成它。你能帮我解决这个问题吗?代码 fragment 表示赞赏。提前致谢。
public abstract class ActionActivity extends SherlockActivity {
protected boolean mIsShowBookmarkScreen = true;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if(mIsShowBookmarkScreen)
{
menu.add("SHOW BOOKMARK SCREEN")
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
else
{
menu.add(SELECT BOOKMARK TYPE);
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//This uses the imported MenuItem from ActionBarSherlock
switch(item.getItemId())
{
case 0:
Intent intent = new Intent(ActionActivity.this,BookmarkScreen.class);
startActivity(intent);
return true;
}
return false;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().setHomeButtonEnabled(true);
}
}
图片 1:
图片 2:
至少有人可以帮助实现第二个目标。我对第一个问题有了想法。
最佳答案
1)使用instanceof
进行区分。
if (this instanceof ActivityA) {
// start Intent A
} else if (this instanceof ActivityB) {
// start Intent B
}
2) 添加一个 Spinner
作为自定义 ActionView
。
<string-array name="items">
<item>SELECT BOOKMARK TYPE</item>
<item>TYPE-1</item>
<item>TYPE-2</item>
<item>TYPE-3</item>
</string-array>
MenuItem spinnerItem = menu.add(null);
spinnerItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
IcsSpinner spinner = new IcsSpinner(this, null);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.items, R.layout.sherlock_spinner_item);
adapter.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
spinnerItem.setActionView(spinner);
请注意,我在这里使用的是私有(private) IcsSpinner
类型,以便在 SDK 版本 < 4.0 上创建相同的外观。看这个answer了解详情。
如果您想进一步自定义 Spinner
,您可能需要创建自己的 Adapter
。
关于android - 设置操作栏项目的下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14080269/