gpt4 book ai didi

android - openOptionsMenu 功能在 ICS 中不起作用?

转载 作者:IT老高 更新时间:2023-10-28 23:37:45 34 4
gpt4 key购买 nike

我正在使用操作栏兼容性库。我试图从一个带有 openOptionsMenu() 函数的按钮打开选项菜单,但它什么也没做。

按手机上的菜单键时,菜单照常显示。这里有什么问题?

public class ReadActivity extends ActionBarActivity {

...

@Override
public boolean onCreateOptionsMenu(Menu menu) {
boolean value;
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.read, menu);
value = super.onCreateOptionsMenu(menu);

if (Helper.SupportsNewApi()) {
getActionBar().hide();
} else {
((View) ((LinearLayout) findViewById(R.id.actionbar_compat))
.getParent()).setVisibility(View.GONE);
}

return value;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
break;
case R.id.menu_search:
// Toast.makeText(this, "Tapped search", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_bookmark:
// selectText();
// setFullScreen(false);
break;
case R.id.menu_day_night_mode:
break;
case R.id.menu_settings:
break;
case R.id.menu_zoom_in:
showOverlay(false);
break;
case R.id.menu_zoom_out:
showOverlay(false);
break;
case R.id.menu_table_of_contents:
Intent tocIntent = new Intent(this, TocActivity.class);
int GET_SECTION_REFERENCE = 1;
startActivityForResult(tocIntent, GET_SECTION_REFERENCE);
break;
case R.id.menu_overflow:
Toast.makeText(this, "Tapped overflow", Toast.LENGTH_SHORT).show();

//closeOptionsMenu();
openOptionsMenu(); //tried the below aswell, no results
//getWindow().openPanel(Window.FEATURE_OPTIONS_PANEL, null);
break;
}
return super.onOptionsItemSelected(item);
}


@Override //disable volume buttons
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (!menuShown && (keyCode == 25 || keyCode == 24)) {
return true;
}
return super.onKeyDown(keyCode, event);
}

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
Log.d(tag, "Keycode is = "+keyCode);
if (keyCode == 82) {
if (!menuShown) {
//openOptionsMenu();
showOverlay(true);
} else {
showOverlay(false);
}


//don't want it to open when pressing menu
return true;
} else if (keyCode == 4 && menuShown) {
showOverlay(false);
return true;
} else if (keyCode == 25 && !menuShown) {
prevPage();
return true;
} else if (keyCode == 24 && !menuShown) {
nextPage();
return true;
}

return super.onKeyUp(keyCode, event);
}

}

最佳答案

我在尝试在应用程序上解决这个 openOptionsMenu 问题时遇到了同样的问题我正在做的应该在 Android 1.6 及更高版本上运行。根据 Werner Van Belle 的回答,我得出结论,我们可以找到一种解决方法来解决问题。所以我想出了下面的代码,当人们不将方法标记为 final 时总是很漂亮,所以我们总是可以覆盖它。如果您不想放弃将您的应用程序定位到最新的 api (android:targetSdkVersion="17"),这是完美的。我希望你们喜欢。 :)

@Override
public void openOptionsMenu() {

Configuration config = getResources().getConfiguration();

if((config.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK)
> Configuration.SCREENLAYOUT_SIZE_LARGE) {

int originalScreenLayout = config.screenLayout;
config.screenLayout = Configuration.SCREENLAYOUT_SIZE_LARGE;
super.openOptionsMenu();
config.screenLayout = originalScreenLayout;

} else {
super.openOptionsMenu();
}
}

关于android - openOptionsMenu 功能在 ICS 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9996333/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com