「カレンダー内日付ボタン」クリック処理

Android開発に関するメモランダム

カテゴリー: 家計簿アプリ  閲覧数: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メソッドで取得した直後に設定すれば、後はもう設定しなくても良いとは思うけど、そうではないのかしら?

週間人気ページランキング / 2-16 → 2-22
順位 ページタイトル抜粋 アクセス数
アクセスが、ありませんでした! 0
2025/2/23 1:01 更新
指定期間人気ページランキング / 1970-1-1 → 2025-2-22
順位 ページタイトル抜粋 アクセス数
アクセスが、ありませんでした! 0
2025/2/23 1:01 更新