Ich bekomme eine IndexOutOfBoundsException auf Samsung Galaxy S5 und Note 3 und 4. Es verweist nicht auf meinen Code. Ist jemand diesem begegnet? Ich habe hier nichts gefunden.IndexOutOfBoundsException auf Samsung-Geräten
Es scheint, geschieht gelegentlich, wenn zu lange Sie auf die EditText versuchen, etwas in einfügen
Edit:.
Ich bin ein einfaches EditText Feld (nicht in Listview oder Spinner) verwendet wird. Es gibt einen Hinweis von ungefähr 28 Charakteren. Ich schalte den Fokus über clearFocus
ein paar Mal und ich verwende eine setOnEditorActionListener
und setOnFocusChangeListener
, die Kontrolle, ein Fragment an die Aktivität zu befestigen.
Edit # 2:
Ich habe in der Lage erfolgreich zu reproduzieren durch zu langen Drücken auf der EditText versuchen, zu versuchen, etwas zu fügen. Es passiert nur, wenn sich bereits Text im EditText befindet und ich lange auf die RECHTE des Textes drücke, nicht auf den Text. Außerdem darf der EditText keinen Fokus haben.
Jede mögliche Lösung durch Erstellen eines benutzerdefinierten EditText und Überschreiben einiger Methoden?
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)
Code:
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());
}
}
verwenden Sie Listview oder Spinner;? Sie Ihren Code – said
Nein, es ist nur eine einfache EditText veröffentlichen müssen. Überprüfen Sie meine Bearbeitung – ono
WAS IST DER CODE IN "setOnEditorActionListener" und onlongclicklistner – said