【问题标题】:Android onDateSet method of DatePicker does not set text of textview in another open dialogDatePicker的Android onDateSet方法不在另一个打开的对话框中设置textview的文本
【发布时间】:2017-07-02 15:39:25
【问题描述】:

我有一个带有 textView 的对话框窗口,它显示 datePicker 选择的日期。我在这个对话框上还有一个按钮,可以打开一个 datePicker(片段)并让我选择一个日期。但是,当我按下 ok 时,日期 textView 不会在对话框窗口中设置。但是,如果我对此进行调试,肯定有正在传递的日期的信息,问题是它没有在对话框中设置。

onDateSet 的代码如下:

@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {

    LayoutInflater inflater = this.getLayoutInflater();
    View view2 = inflater.inflate(R.layout.item_edit, null);

    TextView txtDate = (TextView) view2.findViewById(R.id.txtDate);
    txtDate.setText(year + "/" + month + "/" + dayOfMonth);
}

此代码来自主活动页面。

当我调试这个时,年、月和日都具有正确的值。但是 txtDate.setText 什么也没做。

【问题讨论】:

    标签: android datepicker android-datepicker


    【解决方案1】:

    @RedZerg 我们真的迟到了首先我们不使用 Fragment 来存储我的 DatePicker 我们将它放在它自己的 XML 文件中,其中根布局是一个垂直的 LinearLayout 这样它就不会弄乱我们的活动屏幕从此代码中选择会将选定的 DATE'S 发送到另一个 Activity 我的目标是使用一个按钮选择两个日期并发送日期以在 DB 上执行 BETWEEN SQL 搜索我们使用样式来管理样式

        <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@color/color_lightGray">
        <!--the background sets the color of the calender  -->
    
        <DatePicker
        android:id="@+id/datePicker"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:calendarViewShown="true"
        android:headerBackground="@color/color_Purple"
        android:theme="@style/DatePickerTheme" />
       </LinearLayout>
    
        <style name="DatePickerTheme" parent="Theme.AppCompat.Light.Dialog">
        <item name="colorControlActivated">@color/colorAccent</item>
        <item name="android:selectableItemBackgroundBorderless">@color/color_Purple</item>
        <item name="android:textColorPrimary">@color/color_Black</item>
    </style>
    
        public void onMake(View view){
    
        // custom dialog
        final Dialog dialog = new Dialog(PageOneActivity.this);
        dialog.setContentView(R.layout.datepickerview);
        // the layout datepickerview is a XML file
        dialog.setTitle("");
    
        DatePicker picker = dialog.findViewById(R.id.datePicker);
        // the id datePicker is a Date Picker widget in its own XML file
        // as referenced above you need this to manage custom styling
        final Calendar c = Calendar.getInstance();
        mYear = c.get(Calendar.YEAR);
        mMonth = c.get(Calendar.MONTH);
        mDay = c.get(Calendar.DAY_OF_MONTH);
        //picker.updateDate(2017, 10, 13);//year month day
        picker.updateDate(mYear, mMonth, mDay);// Keeps Calendar initial view what ever today is!
    
        //Date today = Calendar.getInstance().getTime();
        //SimpleDateFormat formatter = new SimpleDateFormat("MM"+"-"+"dd"+"-"+"yyyy");
        //String folderName = formatter.format(today);
    
        System.out.println("Month " + mMonth+1);
    
        picker.init(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() {
        //picker.init(Integer.valueOf(mMonth),Integer.valueOf(mDay),Integer.valueOf(mYear), new DatePicker.OnDateChangedListener() {
            @Override
            public void onDateChanged(DatePicker picker, int year, int monthOfYear, int dayOfMonth) {
    
                if (txtDateOne.getText().toString().isEmpty()) {
                    System.out.println("I am Not Empty");
                    txtDateOne.setText((monthOfYear+1) + "-" + dayOfMonth + "-" + year);
                    etFirstDate.setText(String.valueOf(monthOfYear+1 ) + String.valueOf(dayOfMonth) + String.valueOf(year));
                    v1 = Long.valueOf(etFirstDate.getText().toString());
                    etFirstDate.setText(String.valueOf(v1));
                    //got1 = mDay;
                    dialog.dismiss();
    
                } else {
    
                    txtDateTwo.setText((monthOfYear+1 ) + "-" + dayOfMonth + "-" + year);
                    etSecondDate.setText(String.valueOf(monthOfYear+1) + String.valueOf(dayOfMonth) + String.valueOf(year));
                    v2 = Long.valueOf(etSecondDate.getText().toString());
                    //v2 = Long.valueOf(txtDateTwo.getText().toString());
                    etSecondDate.setText(String.valueOf(v2));
                    dialog.dismiss();
    
    
                    if (etSecondDate.getText().toString().length() > 0) {
                        if (v2 >= v1) {
                            btnDatePicker.setTextColor(getColor(R.color.color_Purple));
                            btnDatePicker.setEnabled(false);
                            sbstring = "First Date < or = Second Date";
                            Toast.makeText( PageOneActivity.this, "First Date < or = Second Date", Toast.LENGTH_LONG ).show();
                            //showSB();
                            int r = (int) (v2-v1);
    
                            //txtDateTwo.setText(String.valueOf(r));
                        } else {
                            btnDatePicker.setTextColor(getColor(R.color.color_deepBlue));
                            btnDatePicker.setEnabled(false);
                            sbstring = "First Date > or = Second Date";
                            Toast.makeText( PageOneActivity.this, "First Date > or = Second Date", Toast.LENGTH_LONG ).show();
    
                            //showSB();
                            //int r = (int) (v1-v2);
                        }
                    }
                }
                //mDay=dayOfMonth;
                //mMonth=(month);
                //mYear=year;
            }
        });
    
        dialog.show();
    }
    
        public void onSend(View view){
        if(etFirstDate.getText().toString().isEmpty() || etSecondDate.getText().toString().isEmpty()){
            Toast.makeText( PageOneActivity.this, "You Need Both Dates\n       PICK A DATE", Toast.LENGTH_LONG ).show();
            return;
        }else {
            Intent send = new Intent(PageOneActivity.this,PageTwoActivity.class);
            send.putExtra("FROM_DATE",v1);
            send.putExtra("TO_DATE",v2);
            startActivity(send);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-14
      • 2012-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多