Как передать значение времени из средства выбора времени в textView в другом действии в студии Android (Java)? - PullRequest
0 голосов
/ 11 июня 2019

Я сделал все, когда дело дошло до создания уведомления о выбранном времени в таймере, но я не могу передать его в просмотр текста в другом действии. Может кто-то помочь мне с этим?

Я хочу передать значение времени от SecondActivity до textView с именем textviewAlarm в HomeActivity при нажатии кнопки Готово.

public class Second extends AppCompatActivity implements View.OnClickListener{

    private int notificationId = 1;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_layout);

        // Set Onclick Listener.
        findViewById(R.id.setBtn).setOnClickListener(this);
        findViewById(R.id.cancelBtn).setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        EditText editText = findViewById(R.id.editText);
        TimePicker timePicker = findViewById(R.id.timePicker);

        // Set notificationId & text.
        Intent intent = new Intent(Second.this, AlarmReceiver.class);
        intent.putExtra("notificationId", notificationId);
        intent.putExtra("todo", editText.getText().toString());

        // getBroadcast(context, requestCode, intent, flags)
        PendingIntent alarmIntent = PendingIntent.getBroadcast(Second.this, 0,
                intent, PendingIntent.FLAG_CANCEL_CURRENT);

        AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);

        switch (view.getId()) {
            case R.id.setBtn:
                int hour = timePicker.getCurrentHour();
                int minute = timePicker.getCurrentMinute();

                // Create time.
                Calendar startTime = Calendar.getInstance();
                startTime.set(Calendar.HOUR_OF_DAY, hour);
                startTime.set(Calendar.MINUTE, minute);
                startTime.set(Calendar.SECOND, 0);
                long alarmStartTime = startTime.getTimeInMillis();

                // Set alarm.
                // set(type, milliseconds, intent)
                alarm.set(AlarmManager.RTC_WAKEUP, alarmStartTime, alarmIntent);


                // Get TextView object which is used to show user pick date and time.
                TextView textView = (TextView)findViewById(R.id.textViewAlarm);

                StringBuffer strBuffer = new StringBuffer();
                strBuffer.append("You selected date time : ");
                strBuffer.append(this.notificationId);

                textView.setText(strBuffer.toString());

                break;

            case R.id.cancelBtn:
                alarm.cancel(alarmIntent);
                Toast.makeText(this, "Canceled.", Toast.LENGTH_SHORT).show();
                break;
        }
    }
}

Я хочу, чтобы выбранное мной время показывалось в textViewAlarm в HomeActivity.

1 Ответ

0 голосов
/ 12 июня 2019

Вы можете получить время из средства выбора времени, добавив

timePicker.setOnTimeChangedListener( new TimePicker.onTimeChangedListener() {

            @Override
                public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {

                    time = String.valueOf(hourOfDay).toString() + ":" + String.valueOf(minute).toString();
                }

}

. Когда пользователь изменяет время, он назначит время переменной и передаст этот аргумент через намерение, как следует

Intent intent = new Intent(Second.this, AlarmReceiver.class);
intent.putExtra("notificationId", notificationId);
intent.putExtra("time", time);

Возьмите этот переданный аргумент из HomeActivity и установите его в TextView следующим образом

textviewAlarm.setText(time.toSring());
...