java - 我的 ActionBar 图标不可点击

标签 java android android-fragments

我对这个图标有一些问题,问题是我可以执行 onLongPress 然后它会显示一个带有该项目文本的 toast。

我的菜单“new_offer_menu.xml”

    <menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/newOffer"
        android:icon="@drawable/ic_action_new"
        android:title="@string/nueva_lista"
        android:alphabeticShortcut="r"
        android:orderInCategory="200"
        android:showAsAction="ifRoom" />
</menu>

这个图标并不在我的所有 fragment 中,但是当我转到正确的 fragment (必须显示它的地方)时,当我单击它时,它不会执行任何操作。在我的 ListaProductosFragment.java 中,我有:

    package info.androidhive.slidingmenu;

import android.app.ActionBar;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.app.ListFragment;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

public class ListaProductosFragment extends ListFragment {
    private List<ListViewItem> mItems;        // ListView items list
    private Menu optionsMenu;
    public ListaProductosFragment(){}


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



        // initialize the items list
        mItems = new ArrayList<ListViewItem>();
        Resources resources = getResources();

        mItems.add(new ListViewItem(resources.getDrawable(R.drawable.tomate_oferta), getString(R.string.aim), getString(R.string.aim_precio), getString(R.string.aim_descuento), getString(R.string.aim_data)));
        mItems.add(new ListViewItem(resources.getDrawable(R.drawable.levadura_oferta), getString(R.string.youtube), getString(R.string.youtube_precio), getString(R.string.youtube_descuento), getString(R.string.youtube_data)));
        mItems.add(new ListViewItem(resources.getDrawable(R.drawable.sopa_oferta), getString(R.string.bebo), getString(R.string.bebo_precio), getString(R.string.bebo_descuento), getString(R.string.aim_data)));
        mItems.add(new ListViewItem(resources.getDrawable(R.drawable.zumo_oferta), getString(R.string.pew), getString(R.string.pew_precio), getString(R.string.pew_descuento), getString(R.string.aim_data)));
        mItems.add(new ListViewItem(resources.getDrawable(R.drawable.tomate_oferta), getString(R.string.aim), getString(R.string.aim_precio), getString(R.string.aim_descuento), getString(R.string.aim_data)));
        // initialize and set the list adapter
        setListAdapter(new ListViewDemoAdapterListaProductos(getActivity(), mItems));
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        // remove the dividers from the ListView of the ListFragment
        getListView().setDivider(null);
    }

    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
        // retrieve theListView item
        ListViewItem item = mItems.get(position);

        // do something
        Toast.makeText(getActivity(), item.title, Toast.LENGTH_SHORT).show();

    }


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

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar actions click


        switch (item.getItemId()) {

            case R.id.newOffer:
                Toast.makeText(getActivity(), "this is my Toast message!!! =)",
                        Toast.LENGTH_LONG).show();
                Intent intent = new Intent(getActivity(), TipusNouProducte.class);
                startActivity(intent);
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }

    }
}

我创建了一个 toast 来查看问题是否出在 Intent 上,但它无论如何都不会出现,只有当我长按此项目时它才会执行某些操作。 我做错了什么?

最佳答案

我相信你应该改变

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/newOffer"
    android:icon="@drawable/ic_action_new"
    android:title="@string/nueva_lista"
    android:alphabeticShortcut="r"
    android:orderInCategory="200"
    android:showAsAction="ifRoom" />
</menu>

<menu xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:yourAppName="http://schemas.android.com/apk/res-auto">   <--
<item android:id="@+id/newOffer"
    android:icon="@drawable/ic_action_new"
    android:title="@string/nueva_lista"
    android:alphabeticShortcut="r"
    android:orderInCategory="200"
--> yourAppName:showAsAction="ifRoom" />
</menu>

如果我没记错的话,LongPress 行为是一种常规行为,系统向用户解释 menuItem 的含义,从标题标签获取字符串

android:title="@string/nueva_lista"

你不是直接管理它,而是Android本身可以管理它,给你错误的感觉。

关于java - 我的 ActionBar 图标不可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28303761/

相关文章:

java - "synchronized"在 Java 中是什么意思?

java - 如何在网络 Controller 中使用 spring 标签的值?

java - 正则表达式捕获字符串和数字

java - Android 应用程序立即停止工作

android-fragments - 在 ImageView 中加载的图像在片段重新加载时消失

java - 在 Hibernate 中数据库约束违规不会抛出异常

android - 如何在我的应用程序的文件资源管理器文件夹中添加应用程序图标

android - 如何在 Eclipse 中停止调试 Android 应用程序

java - 多个 Activity/fragment 的自定义对话框界面

android-fragments - 从片段返回时折叠工具栏布局总是展开