Samsung设备上的IndexOutOfBoundsException

时间:2014-12-12 15:42:48

标签: android indexoutofboundsexception samsung-mobile

我在Samsung Galaxy S5和Note 3和4上收到了IndexOutOfBoundsException。它没有引用我的代码。有没有遇到过这个?我在这里找不到任何东西。

在尝试长按EditText以粘贴内容时,似乎偶尔会发生这种情况。

编辑:

我正在使用一个简单的EditText字段(不在ListView或Spinner中)。有一个约28个字符的提示。我通过clearFocus几次切换焦点,我正在使用setOnEditorActionListenersetOnFocusChangeListener控制将片段附加到活动。

编辑#2:

我已经能够通过长按EditText来尝试粘贴某些东西来成功地重现它。它只发生在EditText中已有文本的情况下,我长按文本右侧,而不是文本右侧。此外,EditText必须没有焦点。

通过创建自定义EditText并覆盖某些方法的任何可能的解决方案?

java.lang.IndexOutOfBoundsException: setSpan (11 ... 11) ends beyond length 0
   at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1024)
   at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:594)
   at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:590)
   at android.text.Selection.setSelection(Selection.java:116)
   at android.text.Selection.setSelection(Selection.java:127)
   at android.widget.Editor.performLongClick(Editor.java:1008)
   at android.widget.TextView.performLongClick(TextView.java:10637)
   at android.view.View$CheckForLongPress.run(View.java:19482)
   at android.os.Handler.handleCallback(Handler.java:733)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:146)
   at android.app.ActivityThread.main(ActivityThread.java:5678)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:515)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
   at dalvik.system.NativeStart.main(Native Method)

代码:

editText.setOnEditorActionListener(new OnEditorActionListener() {

        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            String searchText = v.getText().toString();

            FragmentSearchList fragmentSearchList = (FragmentSearchList) getChildFragmentManager().findFragmentByTag(FRAGMENT_SEARCH_LIST_TAG);

            if(fragmentSearchList != null){
                fragmentSearchList.executeSearch(searchText);
            }

            return true;
        }

    });

editText.setOnFocusChangeListener(new OnFocusChangeListener(){

        @Override
        public void onFocusChange(View view, boolean hasFocus) {
            if(hasFocus){

                FragmentManager fragmentManager = getChildFragmentManager();

                Fragment fragment = fragmentManager.findFragmentByTag(FRAGMENT_SEARCH_LIST_TAG);

                if(fragment == null){

                    editText.setText(null);

                    FragmentSearchList fragmentSearchList = FragmentSearchList.newInstance();

                    FragmentTransaction fragmentSearchListTransaction = fragmentManager.beginTransaction();
                    fragmentSearchListTransaction.add(R.id.viewGroupFragmentSearchListContainer, fragmentSearchList, FRAGMENT_SEARCH_LIST_TAG);
                    fragmentSearchListTransaction.addToBackStack(null);
                    fragmentSearchListTransaction.commit();

                }
            }
            else{

                if(!isRemovingOrPartOfRemovalChain()){
                    editText.setText(mAreaName);
                    getChildFragmentManager().popBackStack();
                }

            }
        }

    });


public boolean isRemovingOrPartOfRemovalChain(){

    if(isRemoving()){
        return true;
    }

    Fragment fragment = this.getParentFragment();

    if(fragment != null){
        if(((MainFragment)fragment).isRemovingOrPartOfRemovalChain()){
            return true;
        }
        else{
            return false;
        }
    }

    else{
        return(this.getActivity().isFinishing());
    }

}

0 个答案:

没有答案
相关问题