【问题标题】:Pass the datepicker year,day,month variables to another activity将日期选择器年、日、月变量传递给另一个活动
【发布时间】:2023-04-04 15:46:01
【问题描述】:

我想将变量年、月和日传递给另一个 Activity。

我该怎么做?

Button button;
int year_x,month_x,day_x;
static final int DIALOG_ID = 0;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final Calendar cal = Calendar.getInstance();
    year_x = cal.get(Calendar.YEAR);
    month_x = cal.get(Calendar.MONTH);
    day_x = cal.get(Calendar.DAY_OF_MONTH);

    showDialogOnButtonClick();
}


public void showDialogOnButtonClick(){

    button = (Button)findViewById(R.id.button);
    button.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    showDialog(DIALOG_ID);
                }
            }
    );
}


@Override
protected Dialog onCreateDialog(int id){

    if(id == DIALOG_ID)
        return new DatePickerDialog(this,dpickerListner,year_x,month_x,day_x);
    return null;
}
private DatePickerDialog.OnDateSetListener dpickerListner
        = new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        year_x = year;
        month_x = monthOfYear + 1;
        day_x = dayOfMonth;
        Toast.makeText(MainActivity.this,year_x +"/"+ month_x+"/"+day_x,Toast.LENGTH_LONG).show();
    }
};

这就是我启动显示 CalendarView 和 DatePicker 的 Activity 的方式

public void onButtonClick(View view){
    if(view.getId()==R.id.button2)
    {
        Intent i = new Intent(MainActivity.this,CalendarView.class);
        startActivity(i);
    }
}
}

【问题讨论】:

标签: android date datepicker calendar


【解决方案1】:

我没有足够的声誉来发表评论,这就是我在这里回答你的问题的原因。

所以首先创建一个 pojo 类来保存你想要传递给下一个活动的数据。

创建该 pojo 类的对象并将其放入您在此处创建的意图对象中:

Intent i = new Intent(MainActivity.this,CalendarView.class);
        startActivity(i);

即您的代码现在应该如下所示:

Intent i = new Intent(MainActivity.this,CalendarView.class);
i.putExtra("data", yourPojoObj);
        startActivity(i);

就是这样。确保你的 pojo 类从 java 实现 Serializable 接口。

【讨论】:

  • 或者,startActivityForResult 用于从 CalendarView 传回数据,我相信这是问题中所要求的
  • 感谢@Mrunalini Pawar 的回复。我不知道什么是 pojo 类我是编程新手,但我会搜索它,感谢您的回复。
  • @MJS - 普通旧 Java 对象 = POJO
  • Guyz 很抱歉,如果我不能立即回复,这可能很有趣,但我对 android 很陌生,需要研究答案,呵呵希望你理解 Guyz。
【解决方案2】:

活动 1:

    int yr, month, day, hour;
    public void getCurrentDate() {  //Consider getting date from Device
        Calendar today = Calendar.getInstance();
        yr = today.get(Calendar.YEAR);
        month = today.get(Calendar.MONTH);
        day = today.get(Calendar.DAY_OF_MONTH);
        hour = today.get(Calendar.HOUR_OF_DAY);
    }
Intent i=new Intent(Activity1.this,Activity2.class);
i.putExtra("year", yr);
i.putExtra("Month ", month);
startActvity(i);

活动 2:

 Intent mIntent = getIntent();
 int yrr= mIntent.getIntExtra("year", 0);
 int monthh= mIntent.getIntExtra("Month", 0);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多