カテゴリー:
家計簿アプリ
閲覧数:466 配信日:2013-07-30 07:20
概要
・「カレンダー内日付ボタン」クリックすると、メイン画面へ遷移
1.変数設定
▼/src/android/style/householdaccount/MonthCalendar.java
・onClickメソッド内
// 「カレンダー内日付ボタン」クリック処理
//当月初日(1日)に関する設定
calendar.set(year,month,1);//日付を、当月初日(1日)に設定
day=calendar.get(Calendar.DAY_OF_MONTH);//当月初日の日付(1日)取得
dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);//当月初日(1日)の曜日取得
//月末日付に関する設定
calendar.add(Calendar.MONTH, 1);//設定した日付のMONTH(月)に1を足す。つまり翌月1日に設定
calendar.add(Calendar.DATE, -1);//設定した日付(翌月1日)のDATE(日)から1を引く。つまり当月末日に設定
int lastDate = calendar.get(Calendar.DATE);//この末日をlastDate変数へ格納
calendar.set(year,month,1);
2.インテント処理
intentを使用し、MainActivityクラス(最初に表示するメインクラス)へ変数を渡す
▼/src/android/style/householdaccount/MonthCalendar.java
//日1,月2,・・・土7。dayOfWeekは当月初日曜日。5なら5番目から始める、という意味。つまり初日から月末までをfor文で繰り返し処理
for(int i=dayOfWeek;i<=dayOfWeek+lastDate-1;i++){
if(v==button_table[i]){//そのボタンをクリックしたとき
Intent intent=new Intent();
intent.setClass(MonthCalendar.this,MainActivity.class);//intentでMainActivityクラス(最初に表示するメインクラス)へ持っていく
intent.putExtra("year",year);//年を"year"へ格納
intent.putExtra("month",month);//月を"month"へ格納
intent.putExtra("day", day);//日を"day"へ格納
startActivity(intent);
}
day=day+1;
}
3.メイン画面に反映
▼/src/android/style/householdaccount/MainActivity.java
onCreateメソッド内
・getExtraメソッドで先ほど格納した"year"、"month"、"day"を取出
Intent intent1 = getIntent();
year = intent1.getIntExtra("year",year);
month = intent1.getIntExtra("month",month);
day = intent1.getIntExtra("day",day);
・なお、リンク先ではここで、それぞれプリファレンスとテーブルネームに設定しているが、実際のコード上では「intentFileName」メソッドにまとめ、複数から呼び出される実装になってている
public String[] intentFileName(){
int[] calendar=intentCalendar();
//第一引数はキー。第二引数はキーが存在しなかった場合の戻り値。
String prefName="pref";
String tableName=String.valueOf(calendar[0])+"-"+String.valueOf(calendar[1]+1)+"-"+String.valueOf(calendar[2]);
String tableMonthName=String.valueOf(calendar[0])+"-"+String.valueOf(calendar[1]+1);
String[] fileName={prefName,tableName,tableMonthName};
return fileName;
}
・メソッドに切り出すのは分かるが、どうして複数個所から呼ばれているかは不明
・インテント内容をgetExtraメソッドで取得した直後に設定すれば、後はもう設定しなくても良いとは思うけど、そうではないのかしら?