TimePickerFragment две кнопки - PullRequest
       12

TimePickerFragment две кнопки

0 голосов
/ 24 апреля 2019

У меня есть 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");
}

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

Вы можете добавить связку к вашему фрагменту.

public void showTimePickerDialog(View v) {
    DialogFragment newFragment = new TimePickerFragment();
    Bundle args = new Bundle();
    args.putString("","");
    newFragment.setArguments(args);
    newFragment.show(getSupportFragmentManager(), "timePicker");
}

Тогда в вашем классе фрагмента вы можете получить аргументы с

Bundle args = getArguments();
args.getString("","");

Вам нужно будет внести соответствующие изменения, поскольку я не смог проверить синтаксис в настоящее время. Но это общая идея о том, как вы можете получить параметры во фрагмент.

1 голос
/ 24 апреля 2019

Вы можете заставить конструктор для вашего TimePickerFragment взять идентификатор представления. В вашей основной деятельности:

DialogFragment newFragment = new TimePickerFragment(v.getId());

В вашем TimePickerFragment:

private String viewId;

public TimePickerFragment(String viewId) {
    super();
    this.viewId = viewId;
}
...