boolean isEof = ca.moveToFirst();
while(isEof) {
doge = ca.getString(ca.getColumnIndex(Usersdata.Users.DOGE));
Log.v("whileでfalseが返されます。"doge);
}
なぜだかわかりません。アドバイスをいただけないでしょうか?
MainActivityで、if文でデータベースから取得した値がtrueであれば、今日の残りHPを100とリセットし、データベースのtrueをfalseにupdateし、24時になると、AlarmManagerの起動によって移動先のServiceで、trueにアップデートする。
そうすることで、onStart()のなかでありながら、24時になった時の、AlarmManagerによって、Serviceと行き来する時だけ、MainActivityのbuttonのonClickListenerの中の100-(i++)によって小さくなった残り体力:iを100に初期化するということを実現したいです。
//MainActivity
java
1/** 2se=select 、up=update 、in=insert、bd=body(体力)、cobo=countbody 、stcobo=string count body、hp=100-body 、stringbody=string.valueOf(hp) 3**/ 4 5import static com.example.android.sample.physicalstrength.Databaseset.CREATE_TABLE; 6 7import static com.example.android.sample.physicalstrength.Databaseset.CREATE_TABLE1; 8 9 10public class MainActivity extends AppCompatActivity { 11 12 int body = 2; 13 int cobo=0; 14 boolean zzz=false; 15 16 @Override 17 protected void onCreate(Bundle savedInstanceState) { 18 super.onCreate(savedInstanceState); 19 setContentView(R.layout.activity_main); 20 21 22 TextView textView = (TextView) findViewById(R.id.body); 23 String nokko="残りは100です。"; 24 textView.setText(noko); 25 26 SQLiteDatabase db = null; 27 Databaseset databaseset = new Databaseset(MainActivity.this); 28 db = databaseset.getWritableDatabase(); 29 30 31 //コメントアウトしてる 32 // db.execSQL(CREATE_TABLE); 33 // db.execSQL(CREATE_TABLE1); 34 35 findViewById(R.id.hp).setOnClickListener(new View.OnClickListener() { 36 37 38 @Override 39 public void onClick(View v) { 40 41 SQLiteDatabase db = null; 42 Databaseset databaseset = new Databaseset(MainActivity.this); 43 db = databaseset.getWritableDatabase(); 44 45 String table = Usersdata.Users.TABLE_NAME; 46 47 java.util.Calendar calendar = java.util.Calendar.getInstance(); 48 int month = calendar.get(java.util.Calendar.MONTH) + 1; 49 int day = calendar.get(java.util.Calendar.DATE); 50 int hour = calendar.get(java.util.Calendar.HOUR); 51 int minute = calendar.get(java.util.Calendar.MINUTE); 52 int second = calendar.get(java.util.Calendar.SECOND); 53 String data = month + "/ " + day + " " + hour + ":" + minute + ":" + second; 54 55 56 cobo =body++; 57 String stcobo = String.valueOf(cobo); 58 59 String sql = "INSERT INTO " + table + "(hp,data) " + "VALUES('" + stcobo + "','" + data + "')"; 60 61 62 ///Serviceで、update文で、id 1の、データのdataをStringがたのoldにして、 63 //Activityで、データベースから取得した値がnew ならばoldにする、そして、データベースに集計を入れる。 64 String stringhp=null; 65 Log.v("insertしてるやつ",stcobo+" : "+data); 66 int hp = 100 - cobo; 67 68 if(hp > 0) { 69 stringhp = "残りは" + hp + "です。"; 70 }else if(hp==0){ 71 stringhp = "もう" + hp + "です。"; 72 }else { 73 stringhp = hp + "になっています。"; 74 } 75 76 TextView textView = (TextView) findViewById(R.id.body); 77 textView.setText(stringhp); 78 79 Cursor c = db.rawQuery(sql, null); 80 c.close(); 81 } 82 }); 83 84 85 } 86 87 88 @Override 89 public void onStart(){ 90 super.onStart(); 91 92 String x="まじで";Log.v("ここに一点の?",x); 93 94 SQLiteDatabase db = null; 95 Databaseset databaseset = new Databaseset(MainActivity.this); 96 db = databaseset.getWritableDatabase(); 97 98 String table1 = Usersdata.Users.TABLE_NAME1; 99 100 //////// 101 // String insert="insert into "+table1+" (doge) values('true')"; 102 // Log.v("insert////",insert); 103 104 105 String select = "select * from "+table1; 106 Log.v("select////",select); 107 108 ////////// 109 // Cursor in=db.rawQuery(insert,null); 110 //このinを何かに使わなきゃいけないんじゃなかったっけ? 111 112 113 Cursor se = db.rawQuery(select, null); 114 115 116 String doge="false"; 117 118 119 //ここではいれてない 120 boolean isEof = se.moveToFirst(); 121 Log.d("Before Cursor Position/","" + se.getPosition()); 122 se.moveToNext(); 123 Log.d("Before Cursor Position/","" + se.getPosition()); 124 // / データを取得していく 125 while(isEof) { 126 doge = se.getString(se.getColumnIndex(Usersdata.Users.DOGE)); 127 Log.v("if入る前Acti:",doge); 128 } 129 130 if(doge=="true"){ 131 //trueになってたら、Serviceでtrueにしたってこと 132 133 body=0; 134 Log.v("Maでtrueだったため、if文に入る :",doge); 135 String update="update "+table1+" set doge='false'"; 136 Cursor up=db.rawQuery(update,null); 137 138 //trueってことは、24時間たったってことだからbzを0にして体力回復させる 139 body=0; 140 141 String bd=String.valueOf(body); 142 Log.v("bodyは0になるはずなのに",bd); 143 144 } 145 se.close(); 146 db.close(); 147 148 149 // 150 int aaa=10; 151 int bbb=39; 152 addReset(aaa,bbb); 153 getPendingIntent(); 154 155 } 156 157 158 159 160 private static final String TAG = MainActivity.class.getSimpleName(); 161 162 //Resetのコード 163 public void addReset(int resetHour, int resetMinute) { 164 165 // Reset(リセット)を設定する 166 PendingIntent mResetSender = this.getPendingIntent(); 167 168 // リセットするメソッドを呼ぶ時間の設定 169 java.util.Calendar cal = java.util.Calendar.getInstance(); 170 cal.setTimeInMillis(System.currentTimeMillis()); 171 // 設定した時刻をカレンダーに設定 172 cal.set(cal.HOUR_OF_DAY, resetHour); 173 cal.set(cal.MINUTE, resetMinute); 174 cal.set(cal.SECOND, 0); 175 cal.set(cal.MILLISECOND, 0); 176 177 Toast.makeText(this, String.format("%d時%d分にtoast表示のメソッドを呼びます", resetHour, resetMinute), Toast.LENGTH_LONG).show(); 178 179 // AlramManager取得 180 AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); 181 // AlarmManagerにPendingIntentを登録 182 am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), mResetSender); 183 184 185 Log.v(TAG, cal.getTimeInMillis() + "ms"); 186 Log.v(TAG, "2:30に表示するメソッドを呼ぶ、セット完了"); 187 } 188 private PendingIntent getPendingIntent() { 189 Intent intent = new Intent(this, MyResetService.class); 190 191 //このintentにクラス変数の値をsetし、Serviceでデータベースにセットする。 192 193 String stcobo=String.valueOf(cobo); 194 195 Log.v("xxxxxxxxxx",stcobo); 196 197 PendingIntent pendingIntent = PendingIntent.getService(this, PendingIntent.FLAG_ONE_SHOT, intent, PendingIntent.FLAG_UPDATE_CURRENT); 198 return pendingIntent; 199 200 } 201 202} 203 204
//Usersdata
java
1package com.example.android.sample.physicalstrength; 2 3 4 5 import android.provider.BaseColumns; 6 7/** 8 * Created by endoutaichi on 2017/04/22. 9 */ 10 11public class Usersdata { 12 13 public Usersdata(){} 14 15 public static abstract class Users implements BaseColumns { 16 17 18 19 public static final String _ID="id"; 20 public static final String TABLE_NAME="body"; 21 public static final String TABLE_NAME1="doge"; 22 public static final String COL_HP="hp"; 23 public static final String COL_DATA="data"; 24 25 public static final String DOGE="doge"; 26 27 28 } 29}
//Databaseset
java
1 2public class Databaseset extends SQLiteOpenHelper { 3 4 5 public static final String DB_NAME="bodyhp.db"; 6 public static final int DB_VERSION=2; 7 8 public static final String CREATE_TABLE= 9 "create table " + Usersdata.Users.TABLE_NAME + "(" + 10 Usersdata.Users._ID + " integer primary key autoincrement, " + 11 Usersdata.Users.COL_HP + " text, " + 12 Usersdata.Users.COL_DATA + " text)"; 13 14 public static final String CREATE_TABLE1= 15 "create table "+Usersdata.Users.TABLE_NAME1+"("+ 16 Usersdata.Users.DOGE+" text )"; 17 18 19 20 21 } 22
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/24 05:03 編集
2017/04/24 06:38
2017/04/24 07:46
2017/04/24 07:59 編集
2017/04/24 07:55
2017/04/24 08:10 編集
2017/04/24 08:06
2017/04/24 08:07
2017/04/24 08:11
2017/04/24 08:14
2017/04/24 08:28
2017/04/24 08:30
2017/04/24 08:32
2017/04/24 08:33
2017/04/24 08:34
2017/04/24 08:43
2017/04/24 08:53
2017/04/24 08:56