相关疑难解决方法(0)

片段未接收菜单回调

我有一个片段类扩展Fragment并调用setHasOptionsMenu参与菜单.这个类也实现了onCreateOptionsMenu,onPrepareOptionsMenuonOptionsItemSelected.

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
        ....
}
Run Code Online (Sandbox Code Playgroud)

我正在使用FragmentTransaction我的Activity(扩展FragmentActivity)动态加载这个片段.

但是没有调用任何菜单回调(onCreateOptionsMenu,onPrepareOptionsMenuonOptionsItemSelected)(我在这些方法中调试了一些断点)并且未显示菜单.

我错过了什么吗?我需要在我的活动中添加一些内容吗?

我正在使用Android兼容性库,使用L11 SDK进行编译并在Xoom中进行测试.

编辑:我发现了问题.我的AndroidManifest目标是L11,这似乎隐藏了菜单按钮并阻止调用回调.但是,如果我从清单中删除它,我会丢失一些我需要的其他功能(例如列表中的激活状态).有没有人知道如何解决这个问题(启用菜单按钮)而不targetSdkVersion=11从清单中删除?

android fragment android-fragments

40
推荐指数
6
解决办法
3万
查看次数

Android - 如何在片段类中访问操作栏的菜单项

我应该如何访问片段中的操作栏菜单项?我试过这个,但什么都没发生

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // TODO Auto-generated method stub

    switch (item.getItemId()) {
    case R.id.menu_refresh:
        Toast.makeText(getActivity().getApplicationContext(), "clicked", Toast.LENGTH_SHORT).show();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    // TODO Auto-generated method stub
    super.onCreateOptionsMenu(menu, inflater);
}
Run Code Online (Sandbox Code Playgroud)

android

35
推荐指数
3
解决办法
3万
查看次数

如何隐藏选项菜单?

我正在使用选项选择菜单项,附上三项(分享,登录,注销)选择登录项,登录活动登录社交标志(脸书或谷歌)任何一个,如果登录隐藏登录项同时显示注销项,这个如果注销社交标志显示登录项目菜单,请帮我...

在此输入图像描述

android menu optionmenu android-actionbar

20
推荐指数
2
解决办法
3万
查看次数

隐藏PreferenceFragment上的选项菜单

我有一个有几个片段的应用程序.

只有A片段有一个选项菜单.可以从片段B(其扩展了listfragment)启动片段.

所以B片段没有选项菜单,如果我从中选择一个项目,片段A将通过选项菜单启动,如果返回,片段B仍然没有选项菜单.

问题是,如果我从导航抽屉中选择"设置"菜单(扩展了首选项碎片),而当前窗口是片段A,则会显示设置片段,其中包含片段A中的选项菜单.但是,如果我在导航抽屉中选择"设置"菜单,而我当前窗口片段B,C,D(没有选项菜单)一切正常.

片段A:

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

    inflater.inflate(R.menu.menu_station, menu);
}
Run Code Online (Sandbox Code Playgroud)

设置片段:

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

    setHasOptionsMenu(true);

    sharedPreferenceSettings = new SharedPreferenceSettings(getActivity());

    addPreferencesFromResource(R.xml.settings);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_settings, container, false);
}
Run Code Online (Sandbox Code Playgroud)

问题出在哪儿?

编辑:

经过几个小时的调试,我找到了解决方案 问题是片段事务的fragmentManager不同.对于设置片段,我使用了getSupportFragmentManager(),对于其他人 - fragmentManager().这会导致一些碎片移动到后面的堆栈.

android android-fragments android-optionsmenu

9
推荐指数
1
解决办法
1003
查看次数

使用SearchView的Android abs,onQueryTextListener无效

我正在尝试使用带有操作栏sherlock的SearchView支持v4版本.

所以我在操作栏中有我的搜索按钮 - >当我触摸它时键盘显示和搜索栏也是如此.

我的问题是我需要使用侦听器onQueryTextSubmit和onQueryTextChange但它们永远不会被触发.我需要使用searh查询字符串并使用它做自定义的东西.

这是完整的activity.java

public class ActivityMain extends SherlockFragmentActivity implements OnQueryTextListener, DialogFragmentListener {
    /**
     * PRIVATE ATTRIBUTES
     */
    private static final String TAG                             = "ActivityMain";
    private ViewPager           _viewPager;
    private TabsAdapter         _tabsAdapter;
    private DialogFiltre        _dialogFiltre;
    private String              _searchCurrentQuery;
    // data
    private boolean             _doubleBackToExitPressedOnce    = false;


    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {

        menu.clear();
        switch ((int) _viewPager.getCurrentItem()) {
            case 0:
                getSupportMenuInflater().inflate(R.menu.empty_menu, menu);
                break;
            case 1:
                getSupportMenuInflater().inflate(R.menu.action_bar_menu, menu);
                break;
            case 2:
                getSupportMenuInflater().inflate(R.menu.empty_menu, menu);
                break;
        }
        return super.onPrepareOptionsMenu(menu);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu …
Run Code Online (Sandbox Code Playgroud)

java android searchable actionbarsherlock searchview

3
推荐指数
1
解决办法
5672
查看次数

如何在片段中创建选项菜单

如何使用 kotlin 在片段中添加选项菜单

class HomeFragment : Fragment() {

companion object {
    lateinit var drawerLayout:DrawerLayout
    lateinit var toolbar: android.support.v7.widget.Toolbar
    private lateinit var toggle: ActionBarDrawerToggle



}



override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                          savedInstanceState: Bundle?): View? {
    // Inflate the layout for this fragment
    val v = inflater.inflate(R.layout.fragment_home, container, false)
    setHasOptionsMenu(true)

    toolbar = v.findViewById(R.id.toolBar) as Toolbar
    toolbar.inflateMenu(R.menu.menuhome)




    drawerLayout = v.findViewById(R.id.drawer_Layout)

    // Creating toggle

    toggle = ActionBarDrawerToggle(activity, drawerLayout, toolbar,R.string.navigaionopen,R.string.drawerClosed)
    drawerLayout.addDrawerListener(toggle)
    toggle.syncState()






    return v
}


override fun onOptionsItemSelected(item: MenuItem?): Boolean {
    when(item!!.itemId){
        R.id.search -> {Toast.makeText(context,"Search",Toast.LENGTH_SHORT).show()} …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-fragments kotlin

2
推荐指数
1
解决办法
6963
查看次数