프로그래밍 방식으로 옵션 메뉴를 여는 방법은 무엇입니까?
사용자가 메뉴 키를 클릭하지 않고 프로그래밍 방식으로 optionsMenu를 열고 싶습니다. 어떻게할까요?
아니면 그냥 Activity.openOptionsMenu ()를 호출 합니까?
활동이 아직 창에 연결되지 않았기 때문에 onCreate에서 수행하면 앱이 중단됩니다. 그렇게한다면 :
@Override
public void onAttachedToWindow() {
openOptionsMenu();
};
...효과가있다.
의 새 Toolbar
클래스를 사용하는 개발자 의 경우 다음 Support Library
과 같이 수행됩니다.
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.showOverflowMenu();
이 코드 줄을 onResume ()에 넣으면 도움이 될 것입니다!
new Handler().postDelayed(new Runnable() {
public void run() {
openOptionsMenu();
}
}, 1000);
MainActivity라는 활동 내의 OnClickListener에서 :
MainActivity.this.openOptionsMenu();
AppCompatActivity를 사용하는 경우
getSupportActionBar().openOptionsMenu();
이를 수행하는 두 가지 방법 :
Activity.getWindow().openPanel(Window.FEATURE_OPTIONS_PANEL, event);
event
인수는이 KeyEvent
메뉴가 그것에서 나온 키보드의 종류에 따라 표시되는 방법을 수정할 수있는 메뉴를 여는 데 사용되는 키를 설명.
또는 ... 사용자가 버튼을 눌렀 음을 시뮬레이션하여 :
IWindowManager wManager = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
KeyEvent kd = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_SOFT_LEFT);
KeyEvent ku = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_SOFT_LEFT);
wManager.injectKeyEvent(kd.isDown(), kd.getKeyCode(), kd.getRepeatCount(), kd.getDownTime(), kd.getEventTime(), true);
당신이 당신의 견해 안에 있다면, 당신은 쓸 수 있습니다
((Activity)getContext()).openOptionsMenu();
오랜 연구와 많은 시도 끝에 유일한 방법은 KeyEvent
. 이렇게하면 옵션 메뉴가 나타납니다.
BaseInputConnection mInputConnection = new BaseInputConnection( findViewById(R.id.main_content), true);
KeyEvent kd = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MENU);
KeyEvent ku = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MENU);
mInputConnection.sendKeyEvent(kd);
mInputConnection.sendKeyEvent(ku);
나를 위해 toolbar.showOverflowMenu()
onClick 에서 선언 하는 것은 작동하지 않습니다. openOptionsMenu()
또한 나를 위해 일하지 않았습니다. 그 대신 다음과 같은 방법이 저에게 효과적입니다.
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
toolbar.showOverflowMenu();
}
}, 500);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setTitleTextColor(0xFFFFFFFF);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
toolbar.showOverflowMenu();
}
}, 100);
참조 URL : https://stackoverflow.com/questions/3133318/how-to-open-the-options-menu-programmatically
'developer tip' 카테고리의 다른 글
winform DataGridview 헤더의 색상을 변경하는 방법은 무엇입니까? (0) | 2020.12.28 |
---|---|
Paint.setTextSize ()의 단위 설정 방법 (0) | 2020.12.28 |
매우 간단한 연결 목록 만들기 (0) | 2020.12.28 |
확장 mysqli가 누락되어 phpmyadmin이 작동하지 않습니다. (0) | 2020.12.28 |
iOS 6 장비로 원격 디버깅하는 동안 Safari에서 "검사 할 수없는 응용 프로그램"이 표시되는 이유는 무엇입니까? (0) | 2020.12.27 |