2015-02-03 5 views
0

이 아이콘에 몇 가지 문제가 있습니다. 그게 할 수있는 일은 onLongPress이며이 항목의 텍스트가있는 축배를 보여줍니다.내 ActionBar 아이콘을 클릭 할 수 없습니다.

내 메뉴 "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> 

이 아이콘은 내 모든 조각에없는,하지만 난 그것을 클릭 (이 표시되어야한다) 올바른 조각에 갈 때 아무것도하지 않는다. 내 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); 
     } 

    } 
} 

, 그것은 단지 뭔가. 내가 뭘 잘못하고있어?

+2

Fragment 어딘가에'setHasOptionsMenu (true);를 호출 했습니까? 이상하게도 나타나서 클릭 할 수 없습니다. – pablisco

+0

예, 언급하지 않았습니다. –

+1

아마 오해 되겠지만 왜'onOptionsItemSelected'는 항상'true'를 리턴합니까? 예제에서 http://developer.android.com/guide/topics/ui/menus.html이 메서드는 스위치 연산자 – olyv

답변

1

나는 내가 틀리지 않는 경우, 시스템은 사용자에게의 의미를 설명하는 일반 동작입니다,

<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> 

에 길게 누르 동작을 변경해야합니다 생각 menuItem, 제목 태그에서 문자열 가져 오기

android:title="@string/nueva_lista" 

내가 관리하고 있지 않습니다. 직접 안드로이드 자체로 관리 할 수 ​​있으므로 잘못된 느낌을 줄 수 있습니다.

+0

AppName은 무엇을 의미합니까? –

+0

일반적으로 네임 스페이스의 이름 일뿐입니다. 프로젝트에 존재하는 어떤 것이라도 될 필요조차 없습니다. xmlns : bar 또는 xmlns : cookie처럼 xmlns : foo가 될 수 있습니다. "### : showAsAction"에서 동일한 값을 사용하는 한 – FrancescoC

+0

오류 : (3) 'info.androidhive.slidingmenu'패키지의 'showAsAction'속성에 대한 리소스 식별자가 없습니다. 어떻게 해야할지 모르겠습니다. 그게 .. –

관련 문제