Ответ 1
Я запустил те же записи ошибок в LogCat. В моем случае это вызвано третьей стороной клавиатуры, которую я использую. Когда я меняю его на клавиатуру Android, запись об ошибке больше не отображается.
У меня есть следующий макет (практически пустой):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/set_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:contentDescription="content desc"
android:orientation="vertical" >
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a TextView" />
</LinearLayout>
Класс Activity содержит следующее:
public class TestActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
}
}
Когда я запускаю это на своем мобильном устройстве, я получаю следующую ошибку:
SpannableStringBuilder
SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
Я пробовал это с TextView и без него, и ошибка все еще остается, я должен делать что-то принципиально неправильное для такого базового макета, чтобы вызвать это.
Есть ли у кого-нибудь идеи о том, как я могу загрузить это без ошибок?
Я запустил те же записи ошибок в LogCat. В моем случае это вызвано третьей стороной клавиатуры, которую я использую. Когда я меняю его на клавиатуру Android, запись об ошибке больше не отображается.
Поскольку ошибка, которую вы получаете, это не, связанная с EditText
, а затем не, связанная с вашей клавиатурой.
Ошибки, которые вы получаете, не являются результатом вашего кода; вы, вероятно, тестируете устройство Samsung, имеющее Samsung TouchWiz.
У меня были те же ошибки, затем я тестировал Nexus S (также Samsung, но чистую ОС Android без TouchWiz), и я не получил эту ошибку.
Итак, в вашем случае просто игнорируйте эти ошибки во время тестирования на устройстве!:)
Глядя на ваш код, я не уверен, почему вы получаете эту ошибку, но у меня была такая же ошибка, но с полями EditText.
Изменение android:inputType="text"
(или любых других изменений текста вводаType) на android:inputType="textNoSuggestions"
(или android:inputType="textEmailAddress|textNoSuggestions"
, например), зафиксировало это для меня.
Вы также можете установить это в коде с чем-то вроде
mInputField.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
Похоже, что Android предполагает, что поля EditText будут иметь предложения. Когда они этого не делают, это ошибки. На 100% не уверены в этом объяснении, но вышеупомянутые изменения исправили это для меня.
http://developer.android.com/reference/android/text/Spanned.html#SPAN_EXCLUSIVE_EXCLUSIVE
Надеюсь, это поможет!
На вашем телефоне Android выберите:
→ Диспетчер приложений → все → клавиатура samsung, а затем нажмите "Очистить кеш"
(удалите все данные, собранные этим приложением).
Попробуйте использовать клавиатуру Android по умолчанию, она исчезнет
Выясните, что вы передали значение в свой MainAcitivity для следующих методов onCreateOptionsMenu и onCreate
В некоторых случаях разработчик удаляет оператор "return super.onCreateOptionsMenu(menu)" и изменяется на "return true".
Это работало для меня... на каждом устройстве
<EditText
android:maxLines="1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="15sp"
android:layout_centerVertical="true"
android:textColor="#000"
android:id="@+id/input_search"
android:background="@null"
android:inputType="text"
android:hint="Enter Address, City or Zip Code"
android:imeOptions="actionSearch"
/>
В коде Java:
mSearchText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
if(actionId == EditorInfo.IME_ACTION_SEARCH
|| actionId == EditorInfo.IME_ACTION_DONE
|| keyEvent.getAction() == KeyEvent.ACTION_DOWN
|| keyEvent.getAction() == KeyEvent.KEYCODE_ENTER){
//execute our method for searching
}
return false;
}
});
У меня было такое же предупреждение, и я обнаружил, что удаление неиспользуемого @id избавилось от предупреждения. Для меня это было очевидно, так как @id ассоциировался с растущим списком textViews, связанным с базой данных, поэтому для каждой записи было предупреждение.
Масуд Мошреф прав, эта ошибка возникает из-за того, что меню опций меню плохо подготовлено из-за отсутствия "return super.onCreateOptionsMenu(menu)" в методе onCreate().
Чтобы попытаться отладить эту ошибку, сначала перейдите на свой терминал/консоль android и выполните следующую команду:
ps | grep THE_ERROR_PID_YOU_GET_(IT_IS_A_NUMBER)
то если выход выйдет как ваше приложение... это ваше приложение вызывает ошибку. Попробуйте найти пустой Strings
, который вы передадите в layout
.
У меня была такая же проблема, и это была моя ошибка, когда я пропускал пустой String
в мой макет. После изменения ""
до " "
эта ошибка исчезла.
Если вы не получите свое приложение из вывода консоли, то это что-то еще вызывает его (возможно, как говорили другие, клавиатура Android)
Я столкнулся с той же проблемой. Я почти потратил впустую почти пару недель, чтобы решить эту проблему. Наконец, я сомневался в себе и попытался создать другой проект, скопировав и вставив некоторые файлы запуска, такие как SplashScreen и LoginScreen.
Но с тем же кодом все еще я получал SPAN_EXCLUSIVE_EXCLUSIVE.
Затем я удалил код обработчика из заставки и снова попытался, и Wow его работала. Я не получаю проблему SPAN_EXCLUSIVE_EXCLUSIVE в logcat.
Интересно, почему это так? до тех пор, пока время не получило никакого другого решения, но удалив обработчик с экрана заставки, он работает.
Попробуйте и обновите здесь, если он разрешен или нет.
Проверьте, есть ли у вас какой-либо элемент, такой как кнопка или текстовый вид, дублированный (скопированный дважды) на экране, где это происходит. Я сделал это незаметно и столкнулся с тем же вопросом.
Я столкнулся с этой проблемой, когда я скопировал какой-то текст из Интернета. Мое решение состоит в том, чтобы обрезать текст/удалить форматирование перед дальнейшей обработкой.
У меня была такая же проблема, но с listView.... я решил ее, потому что я использовал неправильный R.id.listView, что в списке View необходимо иметь значение, в моем случае это были строки, которые я сохранил в listView2... поэтому правильным кодом был R.id.listView2
У меня была такая же проблема, и я исправил ее, выполнив код!
text = (EditText)findViewById(R.id.TextVoiceeditText);
text.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
эта ошибка также возникает из-за изменения URL-адреса API. попробуйте нажать на URL, который вы используете в почтальоне, и c, если он работает правильно. перепроверка API решила мою проблему
попробуйте не использовать представление в XML-дизайне. У меня тоже была та же проблема, но при удалении представления он работал отлично.
как пример:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Username"
android:inputType="number"
android:textColor="#fff" />
<view
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#f9d7db" />
также проверьте и попробуйте изменить методом проб и ошибок android: inputType = "number" на android: inputType = "text" или лучше не использовать его, если не требуется. Иногда клавиатура застревает и получает ошибку в некоторых устройствах.
В моем случае поля EditText с inputType как text/textCapCharacters были причиной этой ошибки. Я заметил это в своем logcat, когда использовал backspace, чтобы полностью удалить текст, введенный в любое из этих полей.
Решение, которое работало для меня, состояло в том, чтобы изменить inputType этих полей на textNoSuggestions, так как это был наиболее подходящий тип и не дал мне никаких нежелательных ошибок amymore.
Я также сталкиваюсь с этой ошибкой в Logcat. Для решения этой проблемы также потребуется 1 день, но в нашем коде нет какой-либо большой ошибки.
Решение: добавьте эту активность в файл Manifest.xml приложения.
код:
<activity android:name="com.example.youappname.activityname" > </activity>
Добавьте все действия приложения в манифест, как это.
Попробуйте решить проблему.