通过日期从datepicker到旋转器选定的项目,并在片段中加载API响应

发布于 2025-01-27 07:02:49 字数 3400 浏览 3 评论 0原文

我有一个工作应用程序,用户从旋转器中选择一个选项datepicker自动打开用户选择日期和查看数据。但是,我试图包括一个imageButton(日历),该图像库(日历)打开日期选择器,而不是选择日期数据应加载。 该过程应为:从旋转器中选择选项 - >通过单击imageButton - > 加载/显示数据,从datepicker中选择日期。

这是ImageButton OnClick事件:

imageButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            final Calendar cldr = Calendar.getInstance();
            int year = cldr.get(Calendar.YEAR);
            int month = cldr.get(Calendar.MONTH);
            int dayOfMonth = cldr.get(Calendar.DAY_OF_MONTH);


            // date picker dialog
            datePickerDialog = new DatePickerDialog(Dashboard.this, 
         AlertDialog.THEME_DEVICE_DEFAULT_DARK, new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                    Calendar calendar1 = Calendar.getInstance();
                    calendar1.set(year, month, dayOfMonth);
                    Date chosendate = calendar1.getTime();
                    calendar1.set(year, month, dayOfMonth);
                    chosendate = calendar1.getTime();
                    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd", 
                    Locale.JAPAN);
                    franchiseDate = formatter.format(chosendate);
                }
            }, year, month, dayOfMonth);
            datePickerDialog.show();
            datePickerDialog.getDatePicker().setMaxDate(cldr.getTimeInMillis());
        }

这是Spinner OnItemeclected事件:

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

              
                @Override
                public void onItemSelected(AdapterView<?> adapterView, View view, int 
                 position, long l) {


                    selectedItem = spinner.getSelectedItem().toString();
                    selectedPosition = spinner.getSelectedItemPosition();

                   if (selectedItem.equals("Revenue by Centre")) {

                         //   String centerDate = franchiseDate;

          
                                Bundle bundle = new Bundle();
                                bundle.putString("authToken", authToken);                                                                      
                                bundle.putString("centreDate", franchiseDate);
                                spinner.setEnabled(false);
                               
                                Centre centre = new Centre();
                                centre.setArguments(bundle);
                                FragmentManager fragmentManager = getSupportFragmentManager();
                                FragmentTransaction fragmentTransaction = 
                                fragmentManager.beginTransaction();
                                fragmentTransaction.replace(R.id.multiFrame, Centre.class, 
                                bundle);
                                fragmentTransaction.commit();

                            }

数据以片段显示,日期也是传递给片段类的VAR。如果我在imageButton.setonClicklistener事件中包括Spinner.setOniTemSelectedListener,而不是在我选择新日期之后加载的数据,则选择一个日期no data no data no data no data no data no data no data no data no data no Data no Select data data no date Data已加载了先前选择的日期。

I have a working app where user select an option from Spinner the datepicker auto open user select the date and view data. However, I am trying to include an Imagebutton(calendar) which opens a date picker and than on selection of date data should load. The process should be : select Option from spinner -> select date from datepicker by clicking Imagebutton -> load/display data.

this is the imagebutton onclick event:

imageButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            final Calendar cldr = Calendar.getInstance();
            int year = cldr.get(Calendar.YEAR);
            int month = cldr.get(Calendar.MONTH);
            int dayOfMonth = cldr.get(Calendar.DAY_OF_MONTH);


            // date picker dialog
            datePickerDialog = new DatePickerDialog(Dashboard.this, 
         AlertDialog.THEME_DEVICE_DEFAULT_DARK, new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                    Calendar calendar1 = Calendar.getInstance();
                    calendar1.set(year, month, dayOfMonth);
                    Date chosendate = calendar1.getTime();
                    calendar1.set(year, month, dayOfMonth);
                    chosendate = calendar1.getTime();
                    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd", 
                    Locale.JAPAN);
                    franchiseDate = formatter.format(chosendate);
                }
            }, year, month, dayOfMonth);
            datePickerDialog.show();
            datePickerDialog.getDatePicker().setMaxDate(cldr.getTimeInMillis());
        }

this is the spinner onItemSelected event:

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

              
                @Override
                public void onItemSelected(AdapterView<?> adapterView, View view, int 
                 position, long l) {


                    selectedItem = spinner.getSelectedItem().toString();
                    selectedPosition = spinner.getSelectedItemPosition();

                   if (selectedItem.equals("Revenue by Centre")) {

                         //   String centerDate = franchiseDate;

          
                                Bundle bundle = new Bundle();
                                bundle.putString("authToken", authToken);                                                                      
                                bundle.putString("centreDate", franchiseDate);
                                spinner.setEnabled(false);
                               
                                Centre centre = new Centre();
                                centre.setArguments(bundle);
                                FragmentManager fragmentManager = getSupportFragmentManager();
                                FragmentTransaction fragmentTransaction = 
                                fragmentManager.beginTransaction();
                                fragmentTransaction.replace(R.id.multiFrame, Centre.class, 
                                bundle);
                                fragmentTransaction.commit();

                            }

Data is displayed in fragment, date is also a var that is passed to fragment class. If I am including spinner.setOnItemSelectedListener in imageButton.setOnClickListener event than data is loading after I select new date ie select a date no data again select a date data is loading for previously selected date.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

时光磨忆 2025-02-03 07:02:49

解决...。

Resolved....call the fragment in onDateSet

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文