2013-11-28 5 views
0

Я программно показывая CAB связанный с GridView используя код ниже:Android: сбросить режим выбора GridView по умолчанию

fileDirGridView.setMultiChoiceModeListener(gridViewMultiChoiceModeListener); 
fileDirGridView.setChoiceMode(GridView.CHOICE_MODE_MULTIPLE_MODAL); 
fileDirGridView.setItemChecked(position, true); 

Теперь я хочу, чтобы отделить multiChoiceModeListener и установить все обратно на путь это было раньше. Для этого я использую следующий код, который всегда приводит к ошибке StackOverFull.

 @Override 
     public void onDestroyActionMode(ActionMode arg0) { 
      // TODO Auto-generated method stub 
      fileDirGridView.setChoiceMode(GridView.CHOICE_MODE_NONE); 

     } 

Logcat:

11-28 07:26:31.780: E/AndroidRuntime(14875): FATAL EXCEPTION: main 
11-28 07:26:31.780: E/AndroidRuntime(14875): java.lang.StackOverflowError 
11-28 07:26:31.780: E/AndroidRuntime(14875): at android.widget.AbsListView$MultiChoiceModeWrapper.onDestroyActionMode(AbsListView.java:6027) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.android.internal.policy.impl.PhoneWindow$DecorView$ActionModeCallbackWrapper.onDestroyActionMode(PhoneWindow.java:2562) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.android.internal.app.ActionBarImpl$ActionModeImpl.finish(ActionBarImpl.java:846) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at android.widget.AbsListView.setChoiceMode(AbsListView.java:1150) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.example.androidfilemanager.MainActivity$7.onDestroyActionMode(MainActivity.java:465) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at android.widget.AbsListView$MultiChoiceModeWrapper.onDestroyActionMode(AbsListView.java:6027) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.android.internal.policy.impl.PhoneWindow$DecorView$ActionModeCallbackWrapper.onDestroyActionMode(PhoneWindow.java:2562) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.android.internal.app.ActionBarImpl$ActionModeImpl.finish(ActionBarImpl.java:846) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at android.widget.AbsListView.setChoiceMode(AbsListView.java:1150) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.example.androidfilemanager.MainActivity$7.onDestroyActionMode(MainActivity.java:465) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at android.widget.AbsListView$MultiChoiceModeWrapper.onDestroyActionMode(AbsListView.java:6027) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.android.internal.policy.impl.PhoneWindow$DecorView$ActionModeCallbackWrapper.onDestroyActionMode(PhoneWindow.java:2562) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.android.internal.app.ActionBarImpl$ActionModeImpl.finish(ActionBarImpl.java:846) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at android.widget.AbsListView.setChoiceMode(AbsListView.java:1150) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.example.androidfilemanager.MainActivity$7.onDestroyActionMode(MainActivity.java:465) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at android.widget.AbsListView$MultiChoiceModeWrapper.onDestroyActionMode(AbsListView.java:6027) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.android.internal.policy.impl.PhoneWindow$DecorView$ActionModeCallbackWrapper.onDestroyActionMode(PhoneWindow.java:2562) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.android.internal.app.ActionBarImpl$ActionModeImpl.finish(ActionBarImpl.java:846) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at android.widget.AbsListView.setChoiceMode(AbsListView.java:1150) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.example.androidfilemanager.MainActivity$7.onDestroyActionMode(MainActivity.java:465) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at android.widget.AbsListView$MultiChoiceModeWrapper.onDestroyActionMode(AbsListView.java:6027) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.android.internal.policy.impl.PhoneWindow$DecorView$ActionModeCallbackWrapper.onDestroyActionMode(PhoneWindow.java:2562) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.android.internal.app.ActionBarImpl$ActionModeImpl.finish(ActionBarImpl.java:846) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at android.widget.AbsListView.setChoiceMode(AbsListView.java:1150) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.example.androidfilemanager.MainActivity$7.onDestroyActionMode(MainActivity.java:465) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at android.widget.AbsListView$MultiChoiceModeWrapper.onDestroyActionMode(AbsListView.java:6027) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.android.internal.policy.impl.PhoneWindow$DecorView$ActionModeCallbackWrapper.onDestroyActionMode(PhoneWindow.java:2562) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.android.internal.app.ActionBarImpl$ActionModeImpl.finish(ActionBarImpl.java:846) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at android.widget.AbsListView.setChoiceMode(AbsListView.java:1150) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.example.androidfilemanager.MainActivity$7.onDestroyActionMode(MainActivity.java:465) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at android.widget.AbsListView$MultiChoiceModeWrapper.onDestroyActionMode(AbsListView.java:6027) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.android.internal.policy.impl.PhoneWindow$DecorView$ActionModeCallbackWrapper.onDestroyActionMode(PhoneWindow.java:2562) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.android.internal.app.ActionBarImpl$ActionModeImpl.finish(ActionBarImpl.java:846) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at android.widget.AbsListView.setChoiceMode(AbsListView.java:1150) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.example.androidfilemanager.MainActivity$7.onDestroyActionMode(MainActivity.java:465) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at android.widget.AbsListView$MultiChoiceModeWrapper.onDestroyActionMode(AbsListView.java:6027) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.android.internal.policy.impl.PhoneWindow$DecorView$ActionModeCallbackWrapper.onDestroyActionMode(PhoneWindow.java:2562) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.android.internal.app.ActionBarImpl$ActionModeImpl.finish(ActionBarImpl.java:846) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at android.widget.AbsListView.setChoiceMode(AbsListView.java:1150) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.example.androidfilemanager.MainActivity$7.onDestroyActionMode(MainActivity.java:465) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at android.widget.AbsListView$MultiChoiceModeWrapper.onDestroyActionMode(AbsListView.java:6027) 
11-28 07:26:31.780: E/AndroidRuntime(14875): at com.android.internal.policy.impl.PhoneWindow$DecorView$ActionModeCallbackWrapper.onDestroyActionMode(PhoneW 
+0

Можете ли вы разместить 'logcat'? –

+0

@AmulyaKhare добавил logcat к вопросу – thunderbird

ответ

2

я установка choiceMode в onDestroyActionMode() в результате которого stackoverflow ошибки. Поэтому я только начал новый поток в том же методе и сбросил choiceMode там, в созданном потоке.

@Override 
     public void onDestroyActionMode(ActionMode mode) { 
      // TODO Auto-generated method stub 
      Thread thread = new Thread() 
      { 
       @Override 
       public void run() { 
        fileDirGridView.clearChoices(); 
        fileDirGridView.setChoiceMode(GridView.CHOICE_MODE_NONE);  
       } 
      }; 

      thread.start(); 
     } 
Смежные вопросы