2012-10-10 1 views
2

FragmentTabs Demo에서와 같이 FragmentTabs와 함께 ActionBarSherlock을 사용하고 있습니다. TabHost에서 다른 FragmentTab을 열 때 어떻게 ActionMode를 닫을 수 있습니까?변경시 ActionMode 닫기 FragmentTab

관련 derjens

ActionBarSherlock의 데모 링크 : 내 ActionMode에서 여기에 코드 FragmentTab.java/Tab LoaderCursorSupport.java

과 :

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 
    selectedRowId = id; 
    mMode = ((SherlockFragmentActivity) getActivity()).startActionMode(new TodoActionMode()); 
} 

private final class TodoActionMode implements ActionMode.Callback { 
     @Override 
     public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
      boolean isLight = DashboardActivity.THEME == R.style.Theme_Sherlock_Light; 

      MenuInflater inflater = mode.getMenuInflater(); 
      inflater.inflate(R.menu.todo_actionmode_menu, menu); 

      return true; 
     } 

     @Override 
     public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
      return false; 
     } 

     @Override 
     public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
      switch (item.getItemId()) { 
      case R.id.menu_todo_actionmode_remove: 
       eintragLoeschen(selectedRowId); 
       return true; 
      case R.id.menu_todo_actionmode_new: 
       neuerTask(); 
       return true; 
      default: 
       mMode.finish(); 
       return true; 
      } 
     } 

     @Override 
     public void onDestroyActionMode(ActionMode mode) { 


      mMode = null; 
     } 
    } 

private void eintragLoeschen(final long rowId) { 

     //eigenen dialog erstellen 
     final Dialog dialog = new Dialog(getActivity()); 
     dialog.setContentView(R.layout.projekttab_todolist_task_delete_dialog); 
     dialog.setTitle(R.string.task_wirklich_loeschen_title); 


     //OK und Abbrechen Button zuweisen 
     Button dialogButtonAbbrechen = (Button) dialog.findViewById(R.id.button_abbrechen); 
     Button dialogButtonOk = (Button) dialog.findViewById(R.id.button_ok); 

     //wenn Button Abbrechen gedrueckt wurde 
     dialogButtonAbbrechen.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       dialog.dismiss(); //schliese dialog 
      } 
     }); 

     //wenn Button Ok gedrueckt wurde   
     dialogButtonOk.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 

       //TODO Eintrag Löschen auf ArrayAdapter ändern 
       Uri uri = ContentUris.withAppendedId(TodoTable.CONTENT_URI, todolist.get((int) rowId).getId()); 
       getActivity().getContentResolver().delete(uri, null, null); 


       mAdapter.remove(todolist.get((int) rowId)); 
       mAdapter.notifyDataSetChanged(); 

       mMode.finish(); 
       dialog.dismiss(); 
      } 
     }); 

     //zeige dialog 
     dialog.show(); 
    } 
+0

몇 가지 예제 코드가 있습니까? 상황을 설명하기 위해? – VKen

+1

내 질문 편집;) – derjens

+0

Stackoverflow에 오신 것을 환영합니다! 귀하의 편집은 다른 사람들이 자신의 상황을 더 잘 이해하여 귀하의 질문에 답변 할 수 있도록 도와줍니다. 행운을 빕니다! – VKen

답변

0

당신이 viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout){ @Override public void onPageScrollStateChanged(int state) { if(ActionModeController.mActionMode != null) ActionModeController.mActionMode.finish(); } }); 같은 addOnPageChangeListener를 호출하여 actionmode을 닫을 수 있습니다