Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:从日期选择器/日期集获取返回值_Android - Fatal编程技术网

Android:从日期选择器/日期集获取返回值

Android:从日期选择器/日期集获取返回值,android,Android,我的页面上有两个按钮。按下按钮时,日期选择器对话框打开。单击日期选择器的“完成”,我想将我的按钮文本设置为用户选择的日期 我想使用datepicker的一个函数来实现这一点 我的代码: final Button fromdate = (Button) dialog.findViewById(R.id.ButtonTripConfigureFrom); fromdate.setOnClickListener(new OnClickListener() {

我的页面上有两个按钮。按下按钮时,日期选择器对话框打开。单击日期选择器的“完成”,我想将我的按钮文本设置为用户选择的日期

我想使用datepicker的一个函数来实现这一点

我的代码:

final Button fromdate = (Button) dialog.findViewById(R.id.ButtonTripConfigureFrom);     
    fromdate.setOnClickListener(new OnClickListener()
    {                   
        public void onClick(View v)
            {                           
                showDialog(0);     
                fromdate.setText(date);
            }
     });

final Button tilldate = (Button) dialog.findViewById(R.id.ButtonTripConfigureTo);       
    tilldate.setOnClickListener(new OnClickListener()
    {                   
        public void onClick(View v)
            {                           
                showDialog(0);  
                tilldate.setText(date);
            }
     });

protected Dialog onCreateDialog(int id) 
    {   
        final Calendar c = Calendar.getInstance();
        int myYear = c.get(Calendar.YEAR);
        int myMonth = c.get(Calendar.MONTH);
        int myDay = c.get(Calendar.DAY_OF_MONTH);

    return new DatePickerDialog(this,myDateSetListener,myYear, myMonth, myDay);
}

private DatePickerDialog.OnDateSetListener myDateSetListener = new DatePickerDialog.OnDateSetListener()
{
    public void onDateSet(DatePicker view, int year, int month, int day) 
    {           
       date = day + "/" + (month+1) +"/"+ year;                    
    } 
};
但是,执行此操作时,不会显示用户选择的值。仅当我再次按下按钮时才显示。(在用户按下日期选择器的“完成”之前,正在执行按钮的settext)

我检查过的所有解决方案都表明在dateset函数中进行了修改。但由于我有两个不同的按钮,我不能在dateset函数中使用按钮的settext


是否有任何方法可以通过日期集函数返回值,或者可以通过某种方法将参数传递到日期集,然后在日期集中使用if-then。

只有在单击fromdate按钮时,您才更新它。这就是为什么当你再次点击它时它会被更新。。。 要在设置日期时更新它,必须在myDateSetListener.onDateSet中更改其文本,但由于有两个按钮,请在按钮中设置一些值。单击以记住单击了哪个按钮:



    mFromdate = (Button) dialog.findViewById(R.id.ButtonTripConfigureFrom);     
    mFromdate.setOnClickListener(new OnClickListener()
    {                   
        public void onClick(View v)
            {                           
                showDialog(0);
                mButtonClicked = 0;
            }
    });

    mTilldate = (Button) dialog.findViewById(R.id.ButtonTripConfigureTo);       
    mTilldate.setOnClickListener(new OnClickListener()
    {                   
        public void onClick(View v)
            {                           
                showDialog(0);
                mButtonClicked = 1;
            }
    });

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

        public void onDateSet(DatePicker view, int year, int month, int day) 
        {         
            if(mButtonClicked == 0)
                mFromdate.setText(day + "/" + (month+1) +"/"+ year);
            else if(mButtonClicked == 1)  
                mTillDate.setText(day + "/" + (month+1) +"/"+ year);           
        } 

    };


另外,将类的mFromdate、mTilldate和mbutonclicked字段设置为

到目前为止,我能想到的只有:-

static int buttonClicked;    
final Button fromdate = (Button) dialog.findViewById(R.id.ButtonTripConfigureFrom);     
        fromdate.setOnClickListener(new OnClickListener()
        {                   
            public void onClick(View v)
                {      
                    buttonClicked = fromDate.getId();
                    showDialog(0);
                }
         });

final Button tilldate = (Button) dialog.findViewById(R.id.ButtonTripConfigureTo);       
    tilldate.setOnClickListener(new OnClickListener()
    {                   
        public void onClick(View v)
            {        
                buttonClicked = tillDate.getId();                   
                showDialog(0);
            }
     });

protected Dialog onCreateDialog(int id) 
    {   
        final Calendar c = Calendar.getInstance();
        int myYear = c.get(Calendar.YEAR);
        int myMonth = c.get(Calendar.MONTH);
        int myDay = c.get(Calendar.DAY_OF_MONTH);

    return new DatePickerDialog(this,myDateSetListener,myYear, myMonth, myDay);
}

private DatePickerDialog.OnDateSetListener myDateSetListener = new DatePickerDialog.OnDateSetListener()
{
    public void onDateSet(DatePicker view, int year, int month, int day) 
    {           
       date = day + "/" + (month+1) +"/"+ year; 
       Button btn = (Button) dialog. findViewById(buttonClicked);  //assuming the dialog in which the button is a class level variable.. 
       btn.setText(date);                   
    } 
};
这绝对可以做到。:)


编辑-我对您的代码所做的是存储了按下的按钮的id。然后从onDateSet()方法中存储的id中检索按钮,并将所选日期设置为该按钮的文本。

谢谢您的解决方案。您的解决方案很好,因为它删除了if子句,但它对我不起作用,因为两个按钮在一个对话框内。对话框内表示哪个对话框??你能发个截图什么的吗??