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}
回答1件
あなたの回答
tips
プレビュー