gpt4 book ai didi

android - 为 ViewPager 中的每个 fragment 单独添加 ActionItems

转载 作者:搜寻专家 更新时间:2023-11-01 07:57:55 25 4
gpt4 key购买 nike

在我的 MainActivity 中,我正在实现通向 2 Fragment 的 ViewPager。问题是我有点混淆了 ActionItems 把它们放在哪里。我想要的是,每当我在 fragment 之间滑动时,每个 fragment 的 ActionItems 都必须不同。谁能指导我这件事。

目前,我没有在 Activity 上添加菜​​单项。但只有 2nd FragmentActionItems 才显示在两个 fragment 上。这是我的代码:

已编辑

对于 1stFragment :

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

inflater.inflate(R.menu.menu_one, menu);
MenuItem searchItem = menu.findItem(R.id.searchWidgetOne);
SearchView search = new SearchView(getActivity());
search.setOnQueryTextListener(this);
searchItem.setActionView(search);

super.onCreateOptionsMenu(menu, inflater);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

switch(item.getItemId())
{
case R.id.action_items_one:
Intent addCrInent = new Intent(getActivity(), ActivityA.class);
startActivity(addCrInent);

return true;
case R.id.action_items_two:
Intent addStIntent = new Intent(getActivity(), ActivityB.class);
startActivity(addStIntent);

return true;
default:
return false;
}

}

对于2ndFragment:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

inflater.inflate(R.menu.menu_second, menu);
MenuItem searchItem = menu.findItem(R.id.searchWidgetTwo);
SearchView search = new SearchView(getActivity());
search.setOnQueryTextListener(this);
searchItem.setActionView(search);

super.onCreateOptionsMenu(menu, inflater);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

switch(item.getItemId())
{
case R.id.action_items_one_secondMenu:
Intent addCrInent = new Intent(getActivity(), ActivityA.class);
startActivity(addCrInent);

return true;
case R.id.action_items_two_secondMenu:
Intent addStIntent = new Intent(getActivity(), ActivityB.class);
startActivity(addStIntent);

return true;
default:
return false;
}

}

对于这两个 fragment ,在我的 onCreate 中我写了这一行:

        setHasOptionsMenu(true);

这是我的menu_one.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/searchWidgetOne"
android:actionViewClass="android.widget.SearchView"
android:icon="@drawable/ic_action_search"
android:orderInCategory="1"
android:showAsAction="always|collapseActionView"
android:title="@string/action_search"/>

<item
android:id="@+id/action_items_one"
android:icon="@drawable/ic_action_new_event"
android:orderInCategory="2"
android:showAsAction="ifRoom"
android:title="@string/add_course"/>

<item
android:id="@+id/action_items_two"
android:icon="@drawable/ic_action_add_person"
android:orderInCategory="3"
android:showAsAction="ifRoom"
android:title="@string/add_student"/>

这是我的menu_second.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
android:id="@+id/searchWidgetTwo"
android:actionViewClass="android.widget.SearchView"
android:icon="@drawable/ic_action_search"
android:orderInCategory="1"
android:showAsAction="always|collapseActionView"
android:title="@string/action_search"/>

<item
android:id="@+id/action_items_one_secondMenu"
android:icon="@drawable/ic_action_new_event"
android:orderInCategory="2"
android:showAsAction="ifRoom"
android:title="@string/add_course"/>

<item
android:id="@+id/action_items_two_secondMenu"
android:icon="@drawable/ic_action_add_person"
android:orderInCategory="3"
android:showAsAction="ifRoom"
android:title="@string/add_student"/>

我还在 onPageSelected() 中使用了 validateOptionMenu() 但没有用。

最佳答案

您似乎在您的项目中做了一些不正确的事情。例如,您在 menu_one.xmlmenu_second.xml 中为菜单使用相同的可绘制对象(图标)和字符串(标题)。如果菜单应该执行不同的功能,请为图标和标题使用独特的内容。

经过以下更改,EffectiveNavigation Android 开发者网站提供的示例应用给出了预期的结果。

MainActivity$LaunchpadSectionFragment:

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.fragment_launchpad, menu);
}

res/menu/fragment_launchpad.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
android:id="@+id/searchWidgetOne"
android:actionViewClass="android.widget.SearchView"
android:icon="@android:drawable/ic_menu_search"
android:orderInCategory="1"
android:showAsAction="always|collapseActionView"
android:title="@android:string/search_go"/>
<item
android:id="@+id/action_items_one"
android:icon="@android:drawable/btn_plus"
android:orderInCategory="2"
android:showAsAction="ifRoom"
android:title="@android:string/ok"/>

</menu>

MainActivity$DummySectionFragment:

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.fragment_dummy_section, menu);
}

res/menu/fragment_dummy_section.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
android:id="@+id/searchWidgetTwo"
android:actionViewClass="android.widget.SearchView"
android:icon="@android:drawable/ic_btn_speak_now"
android:orderInCategory="1"
android:showAsAction="always|collapseActionView"
android:title="@android:string/search_go"/>
<item
android:id="@+id/action_items_two"
android:icon="@android:drawable/btn_minus"
android:orderInCategory="2"
android:showAsAction="ifRoom"
android:title="@android:string/ok"/>

</menu>

结果:

animated screenshot

关于android - 为 ViewPager 中的每个 fragment 单独添加 ActionItems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25217520/

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