Передача ценностей - PullRequest
       50

Передача ценностей

0 голосов
/ 09 октября 2019

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

public class filter extends BottomSheetDialogFragment {

public static filter getInstance() {
    return new filter();
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    final View view = inflater.inflate(R.layout.filter_popup, container, false);
    final TextView dateTextView = (TextView) view.findViewById(R.id.KuupaevValikView);
    final View button1 = view.findViewById(R.id.Nooleke1);
    final View button2 = view.findViewById(R.id.KuupaevValikView);
    final View button3 = view.findViewById(R.id.Nooleke3);
    final View button4 = view.findViewById(R.id.Nooleke4);
    button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Creating the instance of PopupMenu
            PopupMenu popup1 = new PopupMenu(getActivity(), button1);
            //Inflating the Popup using xml file
            popup1.getMenuInflater()
                    .inflate(R.menu.filtermenuprice, popup1.getMenu());

            //registering popup1 with OnMenuItemClickListener
            popup1.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                public boolean onMenuItemClick(MenuItem item) {
                    ((TextView)view.findViewById(R.id.HinnavahemikValikView)).setText (item.getTitle());
                    Toast.makeText(
                            getActivity(),
                            "You Clicked : " + item.getTitle(),
                            Toast.LENGTH_SHORT
                    ).show();
                    return true;
                }
            });
            popup1.show();
        }}
        );

    button2.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            DialogFragment newFragment = new SelectDateFragment();
            newFragment.show(getFragmentManager(), "DatePicker");

        }
    });

И это то, что он вызывает:

public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
   @Override
   public Dialog onCreateDialog(Bundle savedInstanceState) {
       final Calendar calendar = Calendar.getInstance();
       int yy = calendar.get(Calendar.YEAR);
       int mm = calendar.get(Calendar.MONTH);
       int dd = calendar.get(Calendar.DAY_OF_MONTH);
       return new DatePickerDialog(getActivity(), this, yy, mm, dd);
   }

   public void onDateSet(DatePicker view, int yy, int mm, int dd) {
       populateSetDate(yy, mm+1, dd);
   }
   public void populateSetDate(int year, int month, int day) {
       String date = month+"/"+day+"/"+year;
       Toast.makeText(getActivity(), date, Toast.LENGTH_SHORT).show();
       //.setText(month+"/"+day+"/"+year);
   }

}

Я хотел бы заменить button2 на строку с именем date, но я не могу этого сделать.

1 Ответ

0 голосов
/ 09 октября 2019

Это должно работать. Если нет, дайте мне знать, и мы углубимся в это:

public void populateSetDate(int year, int month, int day) {
   String date = month+"/"+day+"/"+year;
   Toast.makeText(getActivity(), date, ).show();
   button2.text = date;

}

Пока ваша функция onDateSet работает правильно, и вы получаете свой тост в populateSetDate, вы должны иметь возможность использовать строку даты для заполнения вашего textView (и вы должны изменить имя переменной этого позже).

...