質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

6519閲覧

排他的なスパンは、0の長さを持つことが出来ません。 と出ます。エラーの原因がわかりません。

edoooooo

総合スコア476

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/04/08 02:05

編集2017/04/08 05:50

java

1SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length

訳すと
排他的なスパンは、0の長さを持つことが出来ません。
と成りました。

強制終了はしないのですが、保存を実行することができません。
アドバイスをいただけないでしょうか?

java

1com.example.android.sample.memo E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 204-08 10:53:07.370 19018-19018/com.example.android.sample.memo E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 304-08 10:53:14.078 19018-19018/com.example.android.sample.memo E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 404-08 10:53:14.078 19018-19018/com.example.android.sample.memo E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 504-08 10:53:24.218 19018-19018/com.example.android.sample.memo V/DB_TEST: Count:0 604-08 10:53:24.999 19018-19018/com.example.android.sample.memo W/IInputConnectionWrapper: setComposingText on inactive InputConnection 704-08 10:53:28.853 19018-19018/com.example.android.sample.memo W/IInputConnectionWrapper: setComposingText on inactive InputConnection 804-08 10:53:31.907 19018-19018/com.example.android.sample.memo E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 904-08 10:53:31.907 19018-19018/com.example.android.sample.memo E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 10

//EditActivity.java

java

1package com.example.android.sample.memo; 2 3import android.app.Activity; 4import android.content.ContentValues; 5import android.content.Context; 6import android.content.Intent; 7import android.database.Cursor; 8import android.database.sqlite.SQLiteDatabase; 9import android.support.v7.app.AppCompatActivity; 10import android.os.Bundle; 11import android.util.Log; 12import android.view.Menu; 13import android.view.MenuItem; 14import android.widget.EditText; 15import android.widget.Toast; 16 17import java.io.OutputStream; 18import java.io.OutputStreamWriter; 19import java.io.PrintWriter; 20import java.text.SimpleDateFormat; 21import java.util.Calendar; 22import java.util.Date; 23import java.util.Locale; 24 25public class EditActivity extends AppCompatActivity { 26 // 保存ファイル名 27 String mFileName = ""; 28 // 保存なしフラグ 29 boolean mNotSave = false; 30 31 @Override 32 protected void onCreate(Bundle savedInstanceState) { 33 super.onCreate(savedInstanceState); 34 setContentView(R.layout.activity_edit); 35 36 //open helper 37 //open db memoDBHelperに変更 38 MemoDBHelper memoDBHelper = new MemoDBHelper(this); 39 SQLiteDatabase db = memoDBHelper.getWritableDatabase(); 40 41 // タイトルと内容入力用の EditText を取得 42 EditText eTxtTitle = (EditText) findViewById(R.id.eTxtTitle); 43 EditText eTxtContent = (EditText) findViewById(R.id.eTxtContent); 44 //実行日の取得 45 EditText eTxtData = (EditText) findViewById(R.id.eTxtData); 46 47 48 49 Intent intent = getIntent(); 50 String name = intent.getStringExtra("NAME"); 51 if (name != null) { 52 mFileName = name; 53 eTxtTitle.setText(intent.getStringExtra("TITLE")); 54 eTxtContent.setText(intent.getStringExtra("CONTENT")); 55 eTxtData.setText(intent.getStringExtra("DATA")); 56 57 } else { 58 Calendar calendar = Calendar.getInstance(); 59 int month = calendar.get(Calendar.MONTH) + 1; 60 int day = calendar.get(Calendar.DATE); 61 eTxtData.setText(month + "月" + day + "日"); 62 } 63 } 64 65 66 @Override 67 protected void onPause() { 68 69 super.onPause(); 70 71 72 // [削除] で画面を閉じるときは、保存しない 73 if (mNotSave) { 74 return; 75 } 76 } 77 78 // メニュー生成 79 @Override 80 public boolean onCreateOptionsMenu(Menu menu) { 81 getMenuInflater().inflate(R.menu.edit, menu); 82 return true; 83 } 84 85 // メニュー選択時の処理 86 @Override 87 public boolean onOptionsItemSelected(MenuItem item) { 88 89 //open helper 90 //open db memoDBHelperに変更 91 MemoDBHelper memoDBHelper = new MemoDBHelper(this); 92 SQLiteDatabase db = memoDBHelper.getWritableDatabase(); 93 94 95 //ここのidにcancelとupdateを入れる 96 switch (item.getItemId()) { 97 case R.id.action_can: 98 //キャンセルが押された場合 99 mNotSave = true; 100 this.finish(); 101 break; 102 case R.id.action_upd: 103 104 105 Cursor c = null; 106 c = db.query( 107 UserContract.Users.TABLE_NAME, 108 null,//fields 109 null,//where 110 null,//where arg ここでは、多分何もせずに、全件取得して、リストに入れる 111 null,//groupBy 112 null,//having 113 null//order by 114 ); 115 c.moveToFirst(); 116 117 String title2=null; 118 String content2=null; 119 String data2=null; 120 Integer id=null; 121 //この下にエラー 122 //データベースから取得の比較用 123 while(c.moveToNext()) { 124 125 id=c.getInt(c.getColumnIndex(UserContract.Users._ID)); 126 127 // タイトル、内容、実行日の追加 128 EditText eTxtTitle = (EditText) findViewById(R.id.eTxtTitle); 129 EditText eTxtContent = (EditText) findViewById(R.id.eTxtContent); 130 EditText eTxtData = (EditText) findViewById(R.id.eTxtData); 131 String title = eTxtTitle.getText().toString(); 132 String content = eTxtContent.getText().toString(); 133 String data = eTxtData.getText().toString(); 134 135 136 //if文で、たいとるがからの時は、保存しない 137 // タイトル、内容が空白の場合、保存しない 138 if (title.isEmpty() || content.isEmpty()) { 139 Toast.makeText(this, R.string.msg_destruction, Toast.LENGTH_SHORT).show(); 140 } else if (id != null) { 141 //nullなのかlength()=!0なのかはわからん 142 143 ContentValues newTitle = new ContentValues(); 144 newTitle.put(UserContract.Users.COL_TITLE, title); 145 int updateCount = db.update( 146 UserContract.Users.TABLE_NAME, 147 newTitle, 148 UserContract.Users.COL_TITLE + "= ?", 149 new String[]{title} 150 ); 151 152 try { 153 ContentValues newContent = new ContentValues(); 154 newContent.put(UserContract.Users.COL_CONTENT, content); 155 int updateCount1 = db.update( 156 UserContract.Users.TABLE_NAME, 157 newContent, 158 UserContract.Users.COL_TITLE + "= ?", 159 new String[]{title} 160 ); 161 162 ContentValues newData = new ContentValues(); 163 newData.put(UserContract.Users.COL_DATA, data); 164 int updateCount2 = db.update( 165 UserContract.Users.TABLE_NAME, 166 newData, 167 UserContract.Users.COL_TITLE + "= ?", 168 new String[]{title} 169 ); 170 171 //保存に成功しました。 172 Toast.makeText(this, R.string.msg_upd, Toast.LENGTH_SHORT).show(); 173 } catch (Exception e) { 174 Toast.makeText(this, "強制returnしました。", Toast.LENGTH_LONG).show(); 175 } 176 } else { 177 178 //insert をEditの中でやる 179 // データをtextから取得して表示するコード 180 181 try { 182 ContentValues newUser = new ContentValues(); 183 newUser.put(UserContract.Users.COL_TITLE, eTxtTitle.toString()); 184 newUser.put(UserContract.Users.COL_CONTENT, eTxtContent.toString()); 185 newUser.put(UserContract.Users.COL_DATA, eTxtData.toString()); 186 long newId = db.insert(UserContract.Users.TABLE_NAME, 187 null, 188 newUser 189 ); 190 Toast.makeText(this, R.string.msg_upd, Toast.LENGTH_SHORT).show(); 191 } catch (Exception e) { 192 Toast.makeText(this, "強制returnしました。", Toast.LENGTH_LONG).show(); 193 } 194 195 } 196 c.close(); 197 db.close(); 198 } 199 200 } 201 return super.onOptionsItemSelected(item); 202 } 203}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2017/04/08 02:35

訳し間違っています。cannotを無視しないでください。
edoooooo

2017/04/08 02:41

修正しました。
yona

2017/04/08 04:11

エラーログを省略せずに記載してください。
edoooooo

2017/04/08 05:57

エラーログを記載しました。どうぞよろしくお願いします。
guest

回答1

0

ベストアンサー

保存されない原因はそのエラーメッセージとはあまり関係無さそうです。
とりあえずコードを綺麗にすることから始めた方がいいです。
メソッドに分割したり、変数名をしっかりつけたりなど。
また、例外をExceptionでキャッチするのはエラーの見落としになるのでやめましょう。

投稿2017/04/08 06:08

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

edoooooo

2017/04/08 06:09

わかりました。ありがとうございます。 コードを見直し、変数名や、コメントを使ってミスが起こる原因を見つけたいと思います。
edoooooo

2017/04/08 13:15

コードをいろいろと修正していたところ、エラーが変わったので、一度ベストアンサーとさせていただきました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問