#android #android-timepicker
#Android #android-timepicker
Вопрос:
У меня есть TimePickerFragment и onTimeSet для выполнения действия после выбора времени. Проблема в том, что у меня есть две кнопки для выбора времени, и я не знаю, как узнать, какую из них использовал пользователь. Я пробовал переключать, но это cannot resolve symbol
.
есть идеи, как узнать, какую кнопку выбирает пользователь?
public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener {
...
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
switch(view) {
case R.id.bstart: //cannot resolve symbol
Toast.makeText(Objects.requireNonNull(getActivity()).getApplicationContext(), "button 1", Toast.LENGTH_SHORT).show();
break;
case R.id.bend:
Toast.makeText(Objects.requireNonNull(getActivity()).getApplicationContext(), "button 2", Toast.LENGTH_SHORT).show();
break;
}
}
при необходимости:
мои кнопки:
<Button
android:id="@ id/button"
...
/>
<Button
android:id="@ id/button2"
...
/>
MainActivity (подведение итогов)
public Button bstart;
public Button bend;
bstart = findViewById(R.id.button);
bend = findViewById(R.id.button2);
bstart.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
showTimePickerDialog(v);
}
});
bend.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
showTimePickerDialog(v);
}
});
public void showTimePickerDialog(View v) {
DialogFragment newFragment = new TimePickerFragment();
newFragment.show(getSupportFragmentManager(), "timePicker");
}
Ответ №1:
Вы можете заставить конструктор для вашего TimePickerFragment использовать идентификатор просмотра. В вашей основной деятельности:
DialogFragment newFragment = new TimePickerFragment(v.getId());
В вашем TimePickerFragment:
private String viewId;
public TimePickerFragment(String viewId) {
super();
this.viewId = viewId;
}
Комментарии:
1.
v.getId()
покажите мне это:TimePickerFragment() in TimePickerFragment cannot be applied to (int)
2. @RickJoe Вы добавили конструктор, который я показываю в своем ответе, к вашему классу TimePickerFragment?
Ответ №2:
Вы могли бы добавить пакет к своему фрагменту.
public void showTimePickerDialog(View v) {
DialogFragment newFragment = new TimePickerFragment();
Bundle args = new Bundle();
args.putString("","");
newFragment.setArguments(args);
newFragment.show(getSupportFragmentManager(), "timePicker");
}
Затем в вашем классе fragment вы можете получить аргументы с
Bundle args = getArguments();
args.getString("","");
Вам нужно будет внести соответствующие изменения, поскольку на данный момент я не смог протестировать синтаксис. Но это общая идея того, как вы можете получить параметры во фрагмент.