当前位置: 首页 > 面试题库 >

棒棒糖中的Android Edittext Onclick Datepickerdialog错误

傅英喆
2023-03-14
问题内容

我正在使用datepickerdialog。它可以在kitkat上正常运行,但是当我在棒棒糖上运行应用程序时,当我单击编辑文本时,它会打开一个datepickerdialog框,但不幸的是,当我选择日期时,它会给出停止错误。以下是edittext上datepicker的代码。

private void setDateTimeField() {
                     fromLabel.setOnClickListener(this);
                     toLabel.setOnClickListener(this);



                     final DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");  //yyyy/MM/dd HH:mm:ss
                    final Date date = new Date();
                    final String u = dateFormat.format(date);


                     Calendar newCalendar = Calendar.getInstance();
                     fromDatePickerDialog = new DatePickerDialog(this, new OnDateSetListener() {

                        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                             Calendar newDate = Calendar.getInstance();

                             newDate.set(year, monthOfYear, dayOfMonth);
                             from1 = dateFormatter.format(newDate.getTime());
                             diff1 = newDate.getTimeInMillis();
                             long d = date.getTime();


                             if((newDate.getTime()).equals(date)||(newDate.getTime()).after(date)){
                                 long d1 = (diff1 / (24 * 60 * 60 * 1000) - d / (24 * 60 * 60 * 1000)) + 1;
                                   if(d1>30){ 
                                         total.setVisibility(View.VISIBLE);
                                         total.setText("Booking not allowed as the Date given is outside Advance Booking Period");
                                         avail.setVisibility(View.GONE);

                                     }
                                   else{
                                         total.setVisibility(View.GONE);
                                         fromLabel.setText(from1);
                                         toLabel.setText(null);
                                         to=null;
                                         avail.setVisibility(View.GONE);
                                         from=fromLabel.getText().toString();
                                   }
                             }
                             else{
                                 total.setVisibility(View.VISIBLE);
                                 total.setText("Choose date after or equals to current date");
                                 fromLabel.setText("");
                                 toLabel.setText(null);     
                                 from=null;     
                                 to=null;
                             }


                         }

                     },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));



                     fromDatePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, getString(R.string.Done), new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                           if (which == DialogInterface.BUTTON_POSITIVE) {
                               dialog.cancel();
                               if(type.equals("According to time"))
                               {

                                  int cnt=-1;
                                 if(from1.equals(u)){
                                     cnt = 1;
                                     loadTimeSpinnerDataATT(text,from,cnt);
                                  }
                                  else if(total.getText()=="Choose date after or equals to current date")
                                  {

                                  }
                                  else if(total.getText()=="Booking not allowed as the Date given is outside Advance Booking Period")
                                  {

                                  }
                                 else
                                 {cnt = 0;

                                  loadTimeSpinnerDataATT(text,from,cnt);
                                 }

                               }
                           }
                        }
                      });

                 }


                 public void onClick(View view) {
                     if(view == fromLabel) {
                         fromDatePickerDialog.show();
                     } else if(view == toLabel) {
                         toDatePickerDialog.show();

                     }        
                 }


                 public void onClose(DialogInterface dialogInterface)
                 {

                 }
          }

问题答案:

试试吧,可能对您有帮助,

在这里改写了日期选择器错误

链接日期选择器

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import android.support.v7.app.ActionBarActivity;
import android.text.InputType;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;

public class MainActivity extends ActionBarActivity {

    private int year;
    private int month;
    private int day;
    static final int DATE_PICKER_ID = 1111;

    // for date picker
     EditText m3_DateDisplay;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

         setContentView(R.layout.activity_main);

        m3_DateDisplay = (EditText) findViewById(R.id.datepick);

        // Get current date by calender

        final Calendar c = Calendar.getInstance();
        year = c.get(Calendar.YEAR);
        month = c.get(Calendar.MONTH);
        day = c.get(Calendar.DAY_OF_MONTH);




        // Show selected date
        StringBuilder dateValue1 = new StringBuilder().append(day).append("-")
                .append(month + 1).append("-").append(year).append(" ");

        // for Converting Correct Date format Save into Database
        SimpleDateFormat sdf123 = new SimpleDateFormat("dd-MM-yyyy");
        String abs1 = dateValue1.toString();
        Date testDate1 = null;
        try {
            testDate1 = sdf123.parse(abs1);
        } catch (ParseException e) {

            e.printStackTrace();
        }
        SimpleDateFormat formatter1 = new SimpleDateFormat("dd-MM-yyyy");
        String DateFormat = formatter1.format(testDate1);

        m3_DateDisplay.setText(DateFormat);

        m3_DateDisplay.setFocusable(false);
        m3_DateDisplay.setInputType(InputType.TYPE_NULL);
        m3_DateDisplay.setOnClickListener(new View.OnClickListener() {
            @SuppressWarnings("deprecation")
            @Override
            public void onClick(View v) {
                showDialog(DATE_PICKER_ID);
            }
        });

    }

    @Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case DATE_PICKER_ID:

            // open datepicker dialog.
            // set date picker for current date
            // add pickerListener listner to date picker
            // return new DatePickerDialog(this, pickerListener, year, month,
            // day);

            // ///Only Show till Date Not More than That.
            DatePickerDialog dialog = new DatePickerDialog(this,
                    pickerListener, year, month, day);
            dialog.getDatePicker().setMaxDate(new Date().getTime());
            return dialog;
        }
        return null;
    }

    private DatePickerDialog.OnDateSetListener pickerListener = new DatePickerDialog.OnDateSetListener() {

        // when dialog box is closed, below method will be called.
        @Override
        public void onDateSet(DatePicker view, int selectedYear,
                int selectedMonth, int selectedDay) {

            year = selectedYear;
            month = selectedMonth;
            day = selectedDay;

            // Show selected date
            StringBuilder dateValue = new StringBuilder().append(day)
                    .append("-").append(month + 1).append("-").append(year)
                    .append(" ");

            // for Converting Correct Date format Save into Database
            SimpleDateFormat sdf123 = new SimpleDateFormat("dd-MM-yyyy");
            String abs1 = dateValue.toString();
            Date testDate1 = null;
            try {
                testDate1 = sdf123.parse(abs1);
            } catch (ParseException e) {

                e.printStackTrace();
            }
            SimpleDateFormat formatter1 = new SimpleDateFormat("dd-MM-yyyy");
            String DateFormat = formatter1.format(testDate1);

            m3_DateDisplay.setText(DateFormat);

        }
    };
}

更改清单中的最小api-11



 类似资料:
  • 问题内容: 由于棒棒糖的某种原因,我遇到了这个错误,由于棒棒糖太新了,我无法找到原因,而且我也不知道如何解决。在此先感谢Logcat错误: 编辑:这是引发错误的代码 我的项目文件夹中的资产文件夹中有helvetica.ttf。 编辑:此应用程序在5.0之前的所有设备上均可运行,因此由于某些原因5.0无法识别我的资产文件夹中的文件。 我试图将其屏幕截图发布到我的资产文件夹中,但是我没有足够的声誉来发

  • 问题内容: Font Awesome 5星图标具有和与众不同之处,两者都是Unicode,现在我想将其用作我的评级系统,首先是常规星,然后单击成为实心星,但是如何在CSS中定义它呢? 码 与我上面的代码我只会得到坚实的星星 问题答案: 普通 版和 实体 版之间的区别是。您只需要调整此值即可在两个版本之间切换: 这是另一个相关的问题,伪元素上的Font Awesome5显示更多[而不是图标显示为正方

  • 我需要一些帮助,以获得一个堆叠条形图的X和Y坐标,每个直方图在堆叠条形图。 有人请帮助获得X和Y坐标的每个矩形的堆叠酒吧悬停。 这是我引用的堆叠条形图的链接。

  • 我想要的是用raphaeljs创建一个简单的圆圈,里面有Facebook的“F”(这也将用于其他类似的情况)。“F”符号将由Font-Awesome生成。 我所做的(没有工作)是使用css和/或将字体家族设置为raphael属性。 代码如下: 这里也有一把小提琴,让你的生活更轻松。据我所见,问题是raphaels将字符放置在文本节点内的tspan中,因此无法对其进行解码。谁有办法克服这个问题?

  • 问题内容: 可以在Swing应用程序中使用Font Awesome吗?如果可能的话,那么如何将其图标与Swing组件(JButton或JLabel)一起使用。我之前在Primefaces应用程序中使用过Font Awesome。 问题答案: 在http://jiconfont.github.io/尝试jIconFont(Swing或JavaFX) 例:

  • 本文向大家介绍很棒的vue弹窗组件,包括了很棒的vue弹窗组件的使用技巧和注意事项,需要的朋友参考一下 弹窗是一个项目必备的复用利器,所以封装起来,保证项目ui一致,是很有必要的。学了一段时间vue,想想还是用vue写一下吧。用的很小白,但是会写出来了,说明我也有进步一丢丢了。继续加油…. 代码贴图如下,样式比较丑,不要介意… 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐