Android 툴바 다른 조각에 대한 메뉴 항목 추가
툴바와 탐색 서랍이 있습니다. 앱을 시작하면 툴바와 탐색 창이 생성됩니다. 탐색 창에서 항목을 클릭하면 새 조각이 시작되고 동일한 도구 모음이 유지됩니다. 기본적으로 특정 조각을 시작할 때 검색, 추가, 편집과 같은 메뉴 항목을 도구 모음에 추가하는 방법은 무엇입니까? 프로그램 시작시 원하지 않지만 동적으로 생성되었습니다. 또한이 버튼을 클릭하여 다른 조각을 시작하도록하려면 어떻게해야합니까? 한 조각에서 도구 모음의 편집 단추가 다른 조각의 편집 단추에 비해 특정 작업을 수행하기를 원합니다. 감사!
Menu_toolbar :
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/edit"
android:orderInCategory="1"
android:title="Edit"
app:showAsAction="always"
android:icon="@drawable/pencil_icon"/>
<item android:id="@+id/add"
android:orderInCategory="1"
android:title="Add"
app:showAsAction="always"
android:icon="@drawable/plus_icon"/>
도구 모음 :
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="55dp"
android:background="#10a1ff"
android:title="Home"
/>
조각에 유사한 코드를 추가합니다.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.library_fragment, parent, false);
setHasOptionsMenu(true);
return v;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.your_menu_xml, menu);
super.onCreateOptionsMenu(menu, inflater);
}
이렇게하면 조각에 대한 메뉴를 사용자 지정할 수 있습니다.
이것은 메뉴를 동적으로 만드는 방법입니다 : http://www.101apps.co.za/index.php/articles/using-toolbars-in-your-apps.html
편집 :
Toolbar actionBarToolBar = (Toolbar) findViewById(R.id.my_toobar);
setSupportActionBar(actionBarToolBar);
actionBarToolBar.setNavigationIcon(R.drawable.icon);
actionBarToolBar.setNavigationContextDescription(getResources().getString(R.string.desc);
actionBarToolBar.setLogo(R.drawable.other_icon);
actionBarToolBar.setLogoDescription(getResources().getString(R.string.other_desc);
actionBarToolBar.inflateMenu(R.menu.fragment_menu);
가장 좋은 방법은 다음과 같습니다.
1. 활동에서 툴바를 찾아서 supportActionBar로 설정합니다.
Toolbar actionBarToolBar = (Toolbar) findViewById(R.id.my_toobar);
setSupportActionBar(actionBarToolBar);
2. 그런 다음 동일한 활동에서 다른 조각에 대한 옵션 메뉴를 처리하는 것은 케이크 조각이 될 것입니다. 원하는대로 각 조각에서 다음 작업을 수행하십시오.
OnCreateView 메서드 호출에서
setHasOptionsMenu(true);
그리고 마지막으로
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.main, menu);
super.onCreateOptionsMenu(menu, inflater);
}
메뉴 항목 클릭을 관리하기 위해 onOptionsItemSelected가 있습니다.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_search :
Log.i("item id ", item.getItemId() + "");
default:
return super.onOptionsItemSelected(item);
}
}
onCreateOptionsMenu
모든 조각에서 메서드를 재정의 하십시오.
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.your_menu_xml, menu);
super.onCreateOptionsMenu(menu, inflater);
}
이 문제를 올바르게 해결했습니다. 내 솔루션은 다음 코드와 같습니다.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
mRootView = inflater.inflate(R.layout.fragment_order_history, container, false);
//getActivity().invalidateOptionsMenu();
setHasOptionsMenu(true);
return mRootView;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.main, menu);
super.onCreateOptionsMenu(menu, inflater);
}
나는 같은 문제가 있었고 표시된 조각에 따라 도구 모음 메뉴를 바꾸고 싶었습니다.
지금 직면 한 문제는 메뉴가 이전 메뉴에 추가된다는 것입니다.
조각에 대한 메뉴 만 표시하려면 다음을 제안합니다.
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear(); //Empty the old menu
inflater.inflate(R.menu.menu_fragment1, menu);
super.onCreateOptionsMenu(menu, inflater);
}
Hope it'll help.
Below are the steps to show different menu options with different fragments.
Step1: Call setHasOptionsMenu(true)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
setHasOptionsMenu(true)
super.onViewCreated(view, savedInstanceState)
}
Step2: Inflate your fragment related option menu items.
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
// To clear previously added menu items
menu?.clear()
inflater?.inflate(R.menu.your_fragment_menu, menu)
super.onCreateOptionsMenu(menu, inflater)
}
'developer tip' 카테고리의 다른 글
dpkg-reconfigure tzdata에 대한 비대화 형 방법 (0) | 2020.11.03 |
---|---|
Qt에서 크기가 고정 된 크기 조정이 불가능한 QDialog? (0) | 2020.11.03 |
알파벳을 열거하는 가장 빠른 방법 (0) | 2020.11.03 |
getLastKnownLocation이 null을 반환합니다. (0) | 2020.11.03 |
Ubuntu에서 JDK 10을 설치하는 방법은 무엇입니까? (0) | 2020.11.03 |