首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎样才能从MaterialDatePicker那里得到日期?

我怎样才能从MaterialDatePicker那里得到日期?
EN

Stack Overflow用户
提问于 2020-08-17 09:12:37
回答 1查看 2.4K关注 0票数 3

我的应用程序使用MaterialDatePicker。我想要创建一个类,其中包括存储来自MaterialDatePicker的日期的数据。我有一些问题:

  1. 如果日期应该是可变的,那么在类中保存日期的最好方法是什么?
  2. 如何从日期选择器资料中获取数据?这是我使用日期选择器材料的活动。通过单击复选框,我希望将所有这些信息(包括日期)保存到一个类对象中。

这是我使用MaterialDatePicker的活动代码

代码语言:javascript
复制
public class NewEvent extends AppCompatActivity {
TextInputEditText etDate, etEventId;
AutoCompleteTextView etType, etNotif;
MaterialToolbar toolbarNE;
SharedPreferences sharedPreferences;

private static final String TAG = "myLogs";
static final String newEv = "newEv";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.new_event);
    final FragmentManager fragmentManager = getSupportFragmentManager();
    final FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

    final FirstFragment fragment1 = new FirstFragment();

    etDate = findViewById(R.id.etDate);
    etType = findViewById(R.id.etType);
    etNotif = findViewById(R.id.etNotif);
    etEventId = findViewById(R.id.etEventId);
    toolbarNE = findViewById(R.id.menuNewEvent);

    toolbarNE.setOnMenuItemClickListener(new MaterialToolbar.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            switch(item.getItemId())
            {
                case R.id.applyEvent:
                    /*Bundle bundle = new Bundle();
                    bundle.putString("name", (String) etEventId.getText().toString());
                    fragment1.setArguments(bundle);
                    fragmentTransaction.replace(R.id.q3, fragment1);
                    fragmentTransaction.addToBackStack(null);
                    fragmentTransaction.commit();*/

                    Intent intent = new Intent(NewEvent.this, FirstFragment.class);
                    intent.putExtra("name", (String) etEventId.getText().toString());
                    setResult(RESULT_OK, intent);


                    finish();
                    //Toast.makeText(getApplicationContext(), materialDatePicker.getHeaderText(), Toast.LENGTH_SHORT).show();

                    return true;
            }
            return false;
        }
    });



    // MaterialDatePicker stuff

    MaterialDatePicker.Builder builder = MaterialDatePicker.Builder.datePicker();
    builder.setTitleText("Выберите дату");
    final MaterialDatePicker materialDatePicker = builder.build();


    etDate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            materialDatePicker.show(getSupportFragmentManager(), "DATE_PICKER");
        }
    });

    materialDatePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener() {
        @Override
        public void onPositiveButtonClick(Object selection) {
            etDate.setText(materialDatePicker.getHeaderText());

        }
    });



    // Тип события
    List listEvent = new ArrayList();
    Collections.addAll(listEvent, "Material", "Shit");
    ArrayAdapter adapterEvent = new ArrayAdapter(this,R.layout.list_item,listEvent);
    etType.setAdapter(adapterEvent);

    // Тип уведомления
    List listNotif = new ArrayList();
    //items.add("Material");
    //items.add("Shit");
    Collections.addAll(listNotif, "Каждый день", "Раз в 2 дня", "Раз в 3 дня", "Раз в 5 дней", "Раз в неделю", "Не напоминать");
    //String [] ITEMS = new String[] {"S1", "S2", "S3"};
    //ArrayAdapter<String> ad = new ArrayAdapter<String>(this, R.layout.list_item, ITEMS);
    ArrayAdapter adapterNotif = new ArrayAdapter(this,R.layout.list_item, listNotif);
    etNotif.setAdapter(adapterNotif);



}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
}

这是我的未来类的代码,但是里面还没有任何东西,因为我在考虑日期。

代码语言:javascript
复制
public class Event {
public String Name;
public String Date;   // I don't know what type of variable to specify here, so far I have specified a string.
public String Comment;
public String Type;
public String Notify;



Event()
{
    Name = "Событие";
    Date = "Date";
    Comment = "Comment";
    Type = "Type";
    Notify = "Notify";
}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-17 09:18:13

要获取日期,请使用:

代码语言:javascript
复制
MaterialDatePicker<Long> picker = builder.build();

picker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener<Long>() {
      @Override public void onPositiveButtonClick(Long selection) {
        // Do something...
      }
    });

通过这种方式,所选日期为毫秒。

如果要将格式设置为字符串,可以使用以下内容:

代码语言:javascript
复制
Calendar utc = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
utc.setTimeInMillis(selection);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String formatted = format.format(utc.getTime());
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63447878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档