2013-12-10 5 views
-1

ListView에 대한 컨텍스트 메뉴를 만들려고하는데 작동하지 않습니다. 항목을 클릭하면 아무 일도 일어나지 않습니다. 내 목록보기 여전히 작동하지 :(ContextMenu가 작동하지 않습니다.

어떤 아이디어를 등록한? fragment.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/LinearLayout1" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<TextView 
    android:id="@+id/textViewLblSearchScreen" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="top|left" 
    android:layout_marginLeft="25dp" 
    android:layout_marginTop="25dp" 
    android:text="@string/lblSearchScreen" /> 

<Button 
    android:id="@+id/buttonSearchUsers" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="top|right" 
    android:layout_marginRight="25dp" 
    android:background="@drawable/bt_gradient" 
    android:text="@string/btnSearchUsers" /> 

<ListView 
    android:id="@android:id/list" 
    android:layout_gravity="bottom" 
    android:layout_width="match_parent" 
    android:layout_height="820dp" > 
</ListView> 

</FrameLayout>  

item_row.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="40dp" 
android:orientation="horizontal" > 

<ImageView 
    android:id="@+id/imageProfileThumbnail" 
    android:layout_width="0dip" 
    android:layout_height="wrap_content" 
    android:layout_gravity="left" 
    android:layout_weight="1" 
    android:contentDescription="@string/select_photo" /> 

<LinearLayout 
    android:layout_width="250dp" 
    android:layout_height="30dp" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/textViewUsername" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="left" 
     android:textSize="12sp"> 
    </TextView> 

    <TextView 
     android:id="@+id/textViewGender" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="left" 
     android:textSize="12sp"> 
    </TextView> 
</LinearLayout> 

</LinearLayout> 

Fragment.java

public class SearchFragment extends ListFragment implements LoaderManager.LoaderCallbacks<List<ResultSearchUser>> { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View layout = super.onCreateView(inflater, container, 
      savedInstanceState); 
    ListView lv = (ListView) layout.findViewById(android.R.id.list); 

    ViewGroup parent = (ViewGroup) lv.getParent(); 
    int lvIndex = parent.indexOfChild(lv);  
    parent.removeViewAt(lvIndex);  
    FrameLayout mLinearLayout = (FrameLayout) inflater.inflate(
      R.layout.search_fragment, container, false); 
    registerForContextMenu(lv); 
    parent.addView(mLinearLayout, lvIndex, lv.getLayoutParams());  
    final User user = new UserService(getActivity()).getUser(); 


    return layout; 
} 

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, 
     ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    menu.setHeaderTitle(R.string.ctxMenuResultSearch); 
    menu.add(Menu.NONE, v.getId(), 1, R.string.ctxMenuAddFriend); 
    menu.add(Menu.NONE, v.getId(), 0, R.string.ctxMenuSendMessage); 
} 

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

    switch (item.getItemId()) { 
    case 0: 
     System.out.println("oi"); 
     return true; 
    default: 
     return super.onContextItemSelected(item); 
    } 

} 

} 

감사합니다. 사전에.

+0

그리고 어디서'ContextMenu'를 구현 했습니까? – Sajmon

+0

내 조각 내에서 onCreateContextMenu 및 onContextItemSelected를 구현했습니다. – placplacboom

답변

0

아무 일도 일어나지 않지만 아무 것도하지 말아야합니다.

당신은

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
    switch (item.getItemId()) { 
     case R.id.edit: 
      editNote(info.id); 
      return true; 
     case R.id.delete: 
      deleteNote(info.id); 
      return true; 
     default: 
      return super.onContextItemSelected(item); 
    } 
} 
같은 적어도

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, 
           ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.context_menu, menu); 
} 

같은 뭔가, 누락 http://developer.android.com/guide/topics/ui/menus.html#context-menu

상황에 맞는 메뉴를 만드는 방법에 대한 개발자 가이드에서 살펴 보셔야합니다

액션 바가 어떤 식 으로든 응답하기를 원한다면

또는 다른 것들. 제발, official guide를 참조하십시오.

+0

나는 그것을했다! 그리고 또한 onCreateContextMenu 메서드에 중단 점을 넣었지만 호출되지 않았습니다 ... 이러한 메서드는 내 조각 안에 있습니다. – placplacboom

+0

내 게시물을 내가 이미 작성한 코드로 업데이트했습니다. – placplacboom

관련 문제