java
SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
訳すと
排他的なスパンは、0の長さを持つことが出来ません。
と成りました。
強制終了はしないのですが、保存を実行することができません。
アドバイスをいただけないでしょうか?
java
com.example.android.sample.memo E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 04-08 10:53:07.370 19018-19018/com.example.android.sample.memo E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 04-08 10:53:14.078 19018-19018/com.example.android.sample.memo E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 04-08 10:53:14.078 19018-19018/com.example.android.sample.memo E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 04-08 10:53:24.218 19018-19018/com.example.android.sample.memo V/DB_TEST: Count:0 04-08 10:53:24.999 19018-19018/com.example.android.sample.memo W/IInputConnectionWrapper: setComposingText on inactive InputConnection 04-08 10:53:28.853 19018-19018/com.example.android.sample.memo W/IInputConnectionWrapper: setComposingText on inactive InputConnection 04-08 10:53:31.907 19018-19018/com.example.android.sample.memo E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 04-08 10:53:31.907 19018-19018/com.example.android.sample.memo E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
//EditActivity.java
java
package com.example.android.sample.memo; import android.app.Activity; import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.EditText; import android.widget.Toast; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; public class EditActivity extends AppCompatActivity { // 保存ファイル名 String mFileName = ""; // 保存なしフラグ boolean mNotSave = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_edit); //open helper //open db memoDBHelperに変更 MemoDBHelper memoDBHelper = new MemoDBHelper(this); SQLiteDatabase db = memoDBHelper.getWritableDatabase(); // タイトルと内容入力用の EditText を取得 EditText eTxtTitle = (EditText) findViewById(R.id.eTxtTitle); EditText eTxtContent = (EditText) findViewById(R.id.eTxtContent); //実行日の取得 EditText eTxtData = (EditText) findViewById(R.id.eTxtData); Intent intent = getIntent(); String name = intent.getStringExtra("NAME"); if (name != null) { mFileName = name; eTxtTitle.setText(intent.getStringExtra("TITLE")); eTxtContent.setText(intent.getStringExtra("CONTENT")); eTxtData.setText(intent.getStringExtra("DATA")); } else { Calendar calendar = Calendar.getInstance(); int month = calendar.get(Calendar.MONTH) + 1; int day = calendar.get(Calendar.DATE); eTxtData.setText(month + "月" + day + "日"); } } @Override protected void onPause() { super.onPause(); // [削除] で画面を閉じるときは、保存しない if (mNotSave) { return; } } // メニュー生成 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.edit, menu); return true; } // メニュー選択時の処理 @Override public boolean onOptionsItemSelected(MenuItem item) { //open helper //open db memoDBHelperに変更 MemoDBHelper memoDBHelper = new MemoDBHelper(this); SQLiteDatabase db = memoDBHelper.getWritableDatabase(); //ここのidにcancelとupdateを入れる switch (item.getItemId()) { case R.id.action_can: //キャンセルが押された場合 mNotSave = true; this.finish(); break; case R.id.action_upd: Cursor c = null; c = db.query( UserContract.Users.TABLE_NAME, null,//fields null,//where null,//where arg ここでは、多分何もせずに、全件取得して、リストに入れる null,//groupBy null,//having null//order by ); c.moveToFirst(); String title2=null; String content2=null; String data2=null; Integer id=null; //この下にエラー //データベースから取得の比較用 while(c.moveToNext()) { id=c.getInt(c.getColumnIndex(UserContract.Users._ID)); // タイトル、内容、実行日の追加 EditText eTxtTitle = (EditText) findViewById(R.id.eTxtTitle); EditText eTxtContent = (EditText) findViewById(R.id.eTxtContent); EditText eTxtData = (EditText) findViewById(R.id.eTxtData); String title = eTxtTitle.getText().toString(); String content = eTxtContent.getText().toString(); String data = eTxtData.getText().toString(); //if文で、たいとるがからの時は、保存しない // タイトル、内容が空白の場合、保存しない if (title.isEmpty() || content.isEmpty()) { Toast.makeText(this, R.string.msg_destruction, Toast.LENGTH_SHORT).show(); } else if (id != null) { //nullなのかlength()=!0なのかはわからん ContentValues newTitle = new ContentValues(); newTitle.put(UserContract.Users.COL_TITLE, title); int updateCount = db.update( UserContract.Users.TABLE_NAME, newTitle, UserContract.Users.COL_TITLE + "= ?", new String[]{title} ); try { ContentValues newContent = new ContentValues(); newContent.put(UserContract.Users.COL_CONTENT, content); int updateCount1 = db.update( UserContract.Users.TABLE_NAME, newContent, UserContract.Users.COL_TITLE + "= ?", new String[]{title} ); ContentValues newData = new ContentValues(); newData.put(UserContract.Users.COL_DATA, data); int updateCount2 = db.update( UserContract.Users.TABLE_NAME, newData, UserContract.Users.COL_TITLE + "= ?", new String[]{title} ); //保存に成功しました。 Toast.makeText(this, R.string.msg_upd, Toast.LENGTH_SHORT).show(); } catch (Exception e) { Toast.makeText(this, "強制returnしました。", Toast.LENGTH_LONG).show(); } } else { //insert をEditの中でやる // データをtextから取得して表示するコード try { ContentValues newUser = new ContentValues(); newUser.put(UserContract.Users.COL_TITLE, eTxtTitle.toString()); newUser.put(UserContract.Users.COL_CONTENT, eTxtContent.toString()); newUser.put(UserContract.Users.COL_DATA, eTxtData.toString()); long newId = db.insert(UserContract.Users.TABLE_NAME, null, newUser ); Toast.makeText(this, R.string.msg_upd, Toast.LENGTH_SHORT).show(); } catch (Exception e) { Toast.makeText(this, "強制returnしました。", Toast.LENGTH_LONG).show(); } } c.close(); db.close(); } } return super.onOptionsItemSelected(item); } }
まだ回答がついていません
会員登録して回答してみよう