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

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

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

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

Android

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

Android Studio

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

Q&A

解決済

1回答

4245閲覧

CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0が出ます。Androidです。

edoooooo

総合スコア476

Java

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

Android

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

Android Studio

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

0グッド

0クリップ

投稿2017/04/07 12:35

データを使う前に、
cursor.moveToFirst();などの対応はしたのですが、このようなエラーが出ます
どうすればいいでしょうか?アドバイスをいただけないでしょうか?

java

1com.example.android.sample.memo E/AndroidRuntime: FATAL EXCEPTION: main 2 android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 3 at android.database.AbstractCursor.checkPosition(AbstractCursor.java:418) 4 at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136) 5 at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50) 6 at com.example.android.sample.memo.EditActivity.onOptionsItemSelected(EditActivity.java:139) 7 at android.app.Activity.onMenuItemSelected(Activity.java:2534) 8 at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:408) 9 at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:195) 10 11

java

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーログを読みましょう
EditActivityの139行目で例外が発生しています。なにが書かれていますか?

投稿2017/04/07 12:40

yona

総合スコア18155

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

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

edoooooo

2017/04/07 12:46

先ほどエラー文をググったのですが、パソコンの電源が切れてしまい 記憶の中ではCursorIndexOutOfBoundsException: Index 0 requested, with a size of 0だったということしかわかりません。 家に帰ってから、調べます、時間があきます。申し訳ありません。
yona

2017/04/07 13:10

英文は全てググるんですか? 目の前にある文字を読もうとはしないんですか?
edoooooo

2017/04/07 13:30

読んで考え、キーワードで検索しました!
swordone

2017/04/07 14:14

訳せ、って事だと思う
yona

2017/04/07 15:10

返事がいいのはいいですが、訳した結果どうだったんですか。 この程度ならググる必要はないですよね、あなたの頭の中だけで答えは出ますよね。
edoooooo

2017/04/07 15:15

はい!今ググっていたのですが、 AndroidRuntime: FATAL EXCEPTION: main と Androidを実行する上で致命的なエラーがあります。(mainで)です。 139行目は、 String title2 = c.getString(c.getColumnIndex(UserContract.Users.COL_TITLE)); String content2 = c.getString(c.getColumnIndex(UserContract.Users.COL_CONTENT)); String data2 = c.getString(c.getColumnIndex(UserContract.Users.COL_DATA)); でした。
swordone

2017/04/07 15:20

そこじゃねえ
edoooooo

2017/04/07 15:21

はい、さがします
swordone

2017/04/07 15:22

違う、訳す場所がそこじゃない CursorIndexOutOfBoundsExceptionのあとに書いてあるのを訳せ
edoooooo

2017/04/07 15:31

カーソルの指数が境界の外です。 0のサイズが指数0とともに要求された。 onOptionsItemSelectedでエラー です。
swordone

2017/04/07 15:38

それそのまんま答えじゃない?
edoooooo

2017/04/07 15:54

できました。 String title2=null; String content2=null; String data2=null; while(c.moveToNext()) { title2 = c.getString(c.getColumnIndex(UserContract.Users.COL_TITLE)); content2 = c.getString(c.getColumnIndex(UserContract.Users.COL_CONTENT)); data2 = c.getString(c.getColumnIndex(UserContract.Users.COL_DATA)); } while文で変数に流し込む作業が行われていませんでした。
edoooooo

2017/04/07 16:03

swordoneさん遅くまで申し訳ありませんでした。 エラー文を今回みたいに活用して、解決できるようやっていきます。 yonaさんありがとうございました。 解決しましたので、ベストアンサーを押します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問