カレンダーアプリを作っていまして、時間の入力をTimePickerを使っています。
そのTimePickerで入力した時間を保存して、MainActivityで表示させると言った処理がどうしても上手くいきません。時間入力をする部分は、MainAcitivity.javaからSchedule.javaに画面遷移するように処理しています。
どなたかわかる方いらっしゃいましたらご回答よろしくお願いいたします。
MainActivity.java
1package com.example.calendar; 2 3import androidx.appcompat.app.AppCompatActivity; 4import androidx.fragment.app.DialogFragment; 5 6import android.app.DatePickerDialog; 7import android.app.TimePickerDialog; 8import android.content.Intent; 9import android.content.SharedPreferences; 10import android.os.Bundle; 11import android.view.View; 12import android.widget.DatePicker; 13import android.widget.TextView; 14import android.widget.TimePicker; 15 16 17import java.util.Calendar; 18import java.util.Locale; 19 20 21public class MainActivity extends AppCompatActivity { 22 private TextView textView; 23 @Override 24 protected void onCreate(Bundle savedInstanceState) { 25 super.onCreate(savedInstanceState); 26 setContentView(R.layout.activity_main); 27 TextView TimeLabel = findViewById(R.id.TimeLabel); 28 29 30 31 32 Calendar cal = Calendar.getInstance(); 33 int year = cal.get(Calendar.YEAR); //西暦を取得 34 int month = cal.get(Calendar.MONTH); //何月かを取得 35 int day = cal.get(Calendar.DAY_OF_MONTH);//何日かを取得 36 37 int hour=cal.get(Calendar.HOUR_OF_DAY); 38 int minute=cal.get(Calendar.MINUTE); 39 40 DatePicker datePicker = findViewById(R.id.datePicker1); 41 datePicker.init(year, month,day , new DatePicker.OnDateChangedListener() { 42 @Override 43 public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 44 // 日付を選択した時に実行される部分 45 Intent intent = new Intent(MainActivity.this, Schedule.class); 46 startActivity(intent); 47 } 48 }); 49 int day_Hour = getIntent().getIntExtra("HOUR", hour); 50 //int day_Minute = getIntent().getIntExtra("MINUTE", minute); 51 52 SharedPreferences sharedPreferences = getSharedPreferences("HOUR", MODE_PRIVATE); 53 int TimeSet = sharedPreferences.getInt("HOUR", 0); 54 55 if(day_Hour>=0) { 56 TimeLabel.setText("始まる時刻-"+ day_Hour); 57 58 SharedPreferences.Editor editor = sharedPreferences.edit(); 59 editor.putInt("HOUR", day_Hour); 60 editor.apply(); 61 62 } else { 63 //TimeLabel.setText("始まる時刻-" + hour+":"+minute); 64 65 } 66 } 67} 68
Schedule.java
1package com.example.calendar; 2 3import androidx.appcompat.app.AppCompatActivity; 4 5import android.app.TimePickerDialog; 6import android.content.Intent; 7import android.content.SharedPreferences; 8import android.os.Bundle; 9import android.view.View; 10import android.widget.TimePicker; 11import android.widget.Toast; 12 13import java.util.Calendar; 14 15public class Schedule extends AppCompatActivity { 16 17 @Override 18 protected void onCreate(Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20 setContentView(R.layout.activity_schedule); 21 22 23 24 final Calendar calendar=Calendar.getInstance(); 25 final int hour=calendar.get(Calendar.HOUR_OF_DAY); 26 final int minute=calendar.get(Calendar.MINUTE); 27 28 final TimePickerDialog timePickerDialog = new TimePickerDialog(this, 29 new TimePickerDialog.OnTimeSetListener() { 30 @Override 31 public void onTimeSet(TimePicker view, int hourOfDay, int minuteOfDay) { 32 Intent intent = new Intent(getApplicationContext(), MainActivity.class); 33 intent.putExtra("HOUR",hourOfDay); 34 //intent.putExtra("MINUTE", minuteOfDay); 35 finish(); 36 } 37 }, hour, minute, true); 38 timePickerDialog.show(); 39 } 40} 41
> どうしても上手くいきません
どうすれば良いと考えてどのようなコードを書きどのような結果になって「どうしても」となったのでしょうか.
MainActivity から別の Activity を呼び出して、結果を受け取りたいなら、startActivity じゃなくて startActivityForResult を使って onActivityResult で結果を受け取る必要があります。
もっとも、カレンダーアプリってことは、時刻をひとつだけ受け取れば済むわけじゃなくて、複数の予定を管理したいのではありませんか?
ご回答ありがとうございます。
最終的には複数個の予定できるようにと考えていますが、今のところ一つだけ試して上手くいければ複数個できるようにしていこうという考えで行っています。
回答1件
あなたの回答
tips
プレビュー