Android-SPAN_EXCLUSIVE_EXCLUSIVEスパンの長さをゼロにすることはできません


190

次のレイアウトがあります(ほぼ空)。

<?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:contentDescriptionからLinearLayout、そのコンテナがフォーカス可能ではないので説明は私の知る限りを使用できないように、。
CommonsWare

6
御返答いただき有難うございます。残念ながら、このエラーのスタックトレースはありません。出力は上記のとおりですが、LogCatのアプリケーションフィールドは私のアプリケーションを指しています。私はコードをデバッグし、エラーがスローされることなく各行をステップ実行したため、Androidコードのどこかにないものを予期している必要があります。
DMac

エンドユーザーの機能を削除/無効化せずに、この迷惑なエラーを回避する方法も知りたいです。
Android開発者

1
私は電話を工場出荷時の設定にリセットしましたが、「サムスンキーボードフィックス」を試してみましたが、うまくいかなかったようです...
Shark

おそらくそれはまったく問題ではありませんが、Android 4.1.1にアップグレードした後、このようなログに多くのエラーが表示されます。SPAN_EXCLUSIVE_EXCLUSIVEスパンの長さをゼロにすることはできません
Sagar Raiyani

回答:


240

LogCatで同じエラーエントリに遭遇しました。私の場合、それは私が使用しているサードパーティのキーボードが原因です。Androidキーボードに戻すと、エラーエントリが表示されなくなります。


3
@Rabiに感謝します。swiftkeyに切り替えてもエラーが発生し始めました。
Maulik Sheth 2013

2
Nexus 7(2012版、4.3を実行中)
トム

(Galaxy S4、4.4.2の場合)-元のsamsungキーボードに戻すと、これが修正されました。ありがとうございました!
FateNuller 2014

6
残念ながら、上記の@Rabiからのリンクはもう良くありません。しかし、これをありがとう。私は実際にSwiftKeyを使用していますが、2年経ってもまだこの問題が発生しているようです。
Splaktar、2014年

1
この問題はGboard(!)でも発生します(これはGoogleからのものです)
Aenadon

113

あなたが取得しているエラーがされているためではないに関連しEditText、それはだではありませんキーボードに関連します。

発生しているエラーは、コードの結果ではありません。おそらく、SamsungのTouchWizを搭載したSamsungデバイスでテストしているでしょう。

同じエラーが発生した後、Nexus S(Samsung製ですが、TouchWizのない純粋なAndroid OS)でテストしたところ、このエラーは発生しませんでした。

したがって、あなたの場合、デバイスでテストしている間はこれらのエラーを無視してください!:)


1
それはあなたのキーボード、おそらくあなたの場合TouchWizのキーボードです。Swiftkeyを搭載したNexus 4でも同じエラーが発生します。デフォルトのAndroidキーボードを選択すると、エラーは発生しません。
ダンテ

キーボードは間違いなくこのエラーの原因となる可能性がありますが、キーボードが使用されていない、または呼び出されていない場合、つまりEditTextがない場合は、キーボードが問題の原因であることがわかりません。EditTextを使用せずに2つの異なるアクティビティを切り替えると、これらのアクティビティの1つに移動するたびにエラーが発生し続けます。
Karim、2013年

2
私はクッキキに同意します。エラーはSamsung TouchWizが原因であり、logcatでエラーを吐き出す以外の問題は引き起こしていません。したがって、それらは無視されます
user2566490 2013

エラーはTouchWizでのみ発生するため、無視することはできません。少なくとも、touchwizに問題があることをsamsungに報告しています。
ソジュルン

1
EditTextに関連していなくても、間違いなく発生します。いくつかのヘッダーを含むPreferenceFragmentを表示すると、このエラーが発生しました-テキストボックスやその他の種類のものはありません。1つのPreferenceFragmentからの変更ごとに、これらのエラーメッセージが2つ表示されました。「サムスンキーボード」から「スマートキーボードプロ」に切り替え、エラーメッセージが表示されなくなりました。
Magnus W

46

コードを見て、なぜそのエラーが発生するのかはわかりませんが、同じエラーが発生しましたが、EditTextフィールドが原因です。

変更android:inputType="text"(または他のinputTypeテキストバリエーションのいずれか)に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

お役に立てれば!


これをありがとう。しかし、TextViewを削除してレイアウトのみを表示しても、エラーが発生します。とても奇妙です。
DMac

LinearLayoutからcontentDescriptionを削除しても役に立たないですか?
tim

2
残念ながら、そうではありません。詳細な調査により、エラーはSamsungデバイスでのみ表示されるようです。
DMac

14

Androidフォンで、
設定->アプリケーションマネージャ->すべて->サムスンキーボードに移動し、[キャッシュをクリア]をクリックします
(このアプリケーションによって収集されたすべてのデータを削除します)。


うわー、そのアプリによって68 MBのものがキャッシュされていた。:O
XåpplI'-I0llwlg'I -

11

デフォルトのAndroidキーボードを使用してみてください、それは消えます


デフォルトのキーボードの使用方法。
NagarjunaReddy 2014

1
電話入力設定で変更する必要があります。変更しなかった場合は、デフォルトのキーボードが必要です。これは、デフォルトのキーボードを使用した非常に面白いソリューションですが、私にとってはうまく
いき

4
デフォルトのAndroidキーボードにも問題があります(私はNexus 5でそれを持っています)
Yoann Hercouet

4

次のメソッドonCreateOptionsMenuおよびonCreateのMainAcitivityに値を渡したことを確認してください

場合によっては、開発者が「return super.onCreateOptionsMenu(menu)」ステートメントを削除し、「return true」に変更しました。


3

これは私のために働いた...すべてのデバイスで

    <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;
        }
    });

ありがとう。魅力のように働いた
swapnil gandhi

リスナーを持つことは必見のようです
AndroidHV

こんにちは、私の画面では編集テキストを使用せず、線形レイアウトとボタンのみを使用します。タブレット(4.1.2)でアプリを実行すると、同じ問題が発生します。
Hardik

1

同じ警告があり、未使用の@idを削除すると警告が削除されることがわかりました。@idがデータベースにリンクされた増加するtextViewのリストに関連付けられていたので、各エントリに対して警告があったので、私にとっては明らかでした。


1

Masood Moshrefは正しいです。このエラーは、メニューのオプションメニューがonCreate()メソッドに「return super.onCreateOptionsMenu(menu)」がないために十分に準備されていないために発生します。


1

このエラーをデバッグするには、まずAndroid端末/コンソールに移動して、次のコマンドを実行します。

ps | grep THE_ERROR_PID_YOU_GET_(IT_IS_A_NUMBER)

次に、出力がアプリとして出力される場合...エラーの原因はアプリです。Stringsあなたがに渡す空を探してみてくださいlayout

私はこれとまったく同じ問題を抱えていStringて、レイアウトに空を渡していたのは私のせいでした。変更した後""" "、このエラーが去っていきました。

アプリがコンソール出力から取得されない場合、それは別の原因です(おそらく、他の人が言ったように、Androidキーボード)


0

私は同じ問題に直面しました。この問題を解決するために、私はほとんど数週間を無駄にしていました。最後に、自分自身に疑問があり、SplashScreenやLoginScreenなどのスタートアップファイルをコピーして貼り付けて、別のプロジェクトを作成しようとしました。

しかし、同じコードでも、SPAN_EXCLUSIVE_EXCLUSIVEを取得していました

次に、スプ​​ラッシュスクリーンからハンドラーコードを削除し、もう一度試してみました。logcatでSPAN_EXCLUSIVE_EXCLUSIVEの問題が発生しません。

なんでかしら?それまでは他の解決策は得られませんでしたが、スプラッシュスクリーンからハンドラーを削除することで機能します。

解決するかどうかは、ここで試して更新してください。


0

これが発生する画面で、ボタンやテキストビューなどの要素が重複している(2回コピーされている)かどうかを確認します。私はこれに気づかれずに同じ問題に直面しました。


0

インターネットからテキストをコピーしたときにも、この問題に遭遇しました。私の解決策は、それ以上の処理を行う前に、テキストをトリミングするか、フォーマットを削除することです。


0

私は同じ問題を抱えていましたが、listViewを使用していました...間違ったR.id.listViewを使用していたので解決しました。リストビューには値を含める必要がありました。したがって、正しいコードはR.id.listView2でした


0

私は同じ問題を抱えていたので、コードに従って修正しました!

  text = (EditText)findViewById(R.id.TextVoiceeditText); 
  text.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

0

このエラーは、変更されたAPI URLが原因でも発生します。postmanで使用しているURLを押してみてください。正しく動作している場合はcを押してください。APIを再確認すると問題が解決しました


0

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"に変更するか確認してみてください。不要な場合は使用しないことをお勧めします。一部のデバイスでキーボードが動かなくなってエラーが発生する場合があります。


0

私の場合、inputTypeがtext / textCapCharactersであるEditTextフィールドががこのエラーの原因でした。バックスペースを使用してこれらのフィールドのいずれかに入力されたテキストを完全に削除するたびに、logcatでこれに気付きました。

私にとってうまくいった解決策は、これらのフィールドのinputTypeをtextNoSuggestionsに変更することでした。これが最も適したタイプであり、不要なエラーが発生しなくなったためです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.