从 Android 上的另一个 xml 文件中的 DatePicker 获取日期

Get date from DatePicker in another xml file on Android

我想从另一个 xml 文件中的 DatePicker 获取日期(日、月、年)。但是应用程序在不使用 InflatedView 的情况下会出现 NullPointerException 错误。如果我使用 theInflatedView,则不会获取日期。我如何从另一个 xml 文件中的 DatePicker 获取日期?

   public void customAlertDialog(){

    final Dialog dialog = new Dialog(HesapActivity.this);
        dialog.setContentView(R.layout.dateset);
        dialog.setTitle("Date");
        theInflatedView = getLayoutInflater().inflate(R.layout.dateset, null);
        final DatePicker dpFirst = (DatePicker) theInflatedView.findViewById(R.id.datePicker1);
        final str;
        dpFirst.init(dpFirst.getYear(), dpFirst.getMonth(), dpFirst.getDayOfMonth(),new OnDateChangedListener() {

             @Override
             public void onDateChanged(DatePicker arg0, int arg1, int arg2, int arg3) {
             str=(arg3+ "."+ (arg2+1) + "."+arg1);
             }
             } );

        Button dialogButton = (Button) dialog.findViewById(R.id.setDPBt);
        dialogButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {       
                textFirst.setText(str);//textFirst is MainActivity variable.
                dialog.dismiss();
            }
        });

        dialog.show();


  }

在 onCreate()

 customAlertDialog();

单击 AlertDialog 中的按钮时不设置文本日期

------更新--------

我解决了下面的问题

final DatePicker dpFirst = (DatePicker) dialog.findViewById(R.id.datePicker1);//I changed theInflatedView to dialog

更改如下:

public void customAlertDialog(){

final Dialog dialog = new Dialog(HesapActivity.this);
    dialog.setContentView(R.layout.dateset);
    dialog.setTitle("Date");
    theInflatedView = getLayoutInflater().inflate(R.layout.dateset, null);
    final DatePicker dpFirst = (DatePicker) theInflatedView.findViewById(R.id.datePicker1);
    final str;
    dpFirst.init(dpFirst.getYear(), dpFirst.getMonth(), dpFirst.getDayOfMonth(),new OnDateChangedListener() {

         @Override
         public void onDateChanged(DatePicker arg0, int arg1, int arg2, int arg3) {
         str=(arg3+ "."+ (arg2+1) + "."+arg1);
         }
         } );

    Button dialogButton = (Button) dialog.findViewById(R.id.setDPBt);
    dialogButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {       
            textFirst.setText(str);//textFirst is MainActivity variable.
            dialog.dismiss();
        }
    });

    dialog.show();


  }

public void customAlertDialog(){

final Dialog dialog = new Dialog(HesapActivity.this);
    dialog.setContentView(R.layout.dateset);
    dialog.setTitle("Date");
    theInflatedView = getLayoutInflater().inflate(R.layout.dateset, null);
    final DatePicker dpFirst = (DatePicker) theInflatedView.findViewById(R.id.datePicker1);
    final str;
    dpFirst.init(dpFirst.getYear(), dpFirst.getMonth(), dpFirst.getDayOfMonth(),new OnDateChangedListener() {

         @Override
         public void onDateChanged(DatePicker arg0, int arg1, int arg2, int arg3) {
         textFirst.setText(arg3+ "."+ (arg2+1) + "."+arg1);
         }
         } );

    Button dialogButton = (Button) dialog.findViewById(R.id.setDPBt);
    dialogButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {       
            dialog.dismiss();
        }
    });

    dialog.show();


  }