如何从 MaterialDatePicker 获取日期?

Кир*_*мов 3 java android android-datepicker material-components-android

我的应用程序使用 MaterialDatePicker。我想创建一个类,除其他数据外,还将存储 MaterialDatePicker 中的日期。\n我有一些问题:

\n
    \n
  1. 如果日期应该可以更改,那么在课堂上保存日期的最佳方法是什么?
  2. \n
  3. 如何从日期选择器材料中获取日期?\n这是我使用日期选择器材料的活动。通过单击复选框,我想将所有这些信息(包括日期)保存到类对象中。
  4. \n
\n

这是我与 MaterialDatePicker 的活动代码

\n
public class NewEvent extends AppCompatActivity {\nTextInputEditText etDate, etEventId;\nAutoCompleteTextView etType, etNotif;\nMaterialToolbar toolbarNE;\nSharedPreferences sharedPreferences;\n\nprivate static final String TAG = "myLogs";\nstatic final String newEv = "newEv";\n@Override\nprotected void onCreate(Bundle savedInstanceState) {\n    super.onCreate(savedInstanceState);\n    setContentView(R.layout.new_event);\n    final FragmentManager fragmentManager = getSupportFragmentManager();\n    final FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();\n\n    final FirstFragment fragment1 = new FirstFragment();\n\n    etDate = findViewById(R.id.etDate);\n    etType = findViewById(R.id.etType);\n    etNotif = findViewById(R.id.etNotif);\n    etEventId = findViewById(R.id.etEventId);\n    toolbarNE = findViewById(R.id.menuNewEvent);\n\n    toolbarNE.setOnMenuItemClickListener(new MaterialToolbar.OnMenuItemClickListener() {\n        @Override\n        public boolean onMenuItemClick(MenuItem item) {\n            switch(item.getItemId())\n            {\n                case R.id.applyEvent:\n                    /*Bundle bundle = new Bundle();\n                    bundle.putString("name", (String) etEventId.getText().toString());\n                    fragment1.setArguments(bundle);\n                    fragmentTransaction.replace(R.id.q3, fragment1);\n                    fragmentTransaction.addToBackStack(null);\n                    fragmentTransaction.commit();*/\n\n                    Intent intent = new Intent(NewEvent.this, FirstFragment.class);\n                    intent.putExtra("name", (String) etEventId.getText().toString());\n                    setResult(RESULT_OK, intent);\n\n\n                    finish();\n                    //Toast.makeText(getApplicationContext(), materialDatePicker.getHeaderText(), Toast.LENGTH_SHORT).show();\n\n                    return true;\n            }\n            return false;\n        }\n    });\n\n\n\n    // MaterialDatePicker stuff\n\n    MaterialDatePicker.Builder builder = MaterialDatePicker.Builder.datePicker();\n    builder.setTitleText("\xd0\x92\xd1\x8b\xd0\xb1\xd0\xb5\xd1\x80\xd0\xb8\xd1\x82\xd0\xb5 \xd0\xb4\xd0\xb0\xd1\x82\xd1\x83");\n    final MaterialDatePicker materialDatePicker = builder.build();\n\n\n    etDate.setOnClickListener(new View.OnClickListener() {\n        @Override\n        public void onClick(View view) {\n            materialDatePicker.show(getSupportFragmentManager(), "DATE_PICKER");\n        }\n    });\n\n    materialDatePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener() {\n        @Override\n        public void onPositiveButtonClick(Object selection) {\n            etDate.setText(materialDatePicker.getHeaderText());\n\n        }\n    });\n\n\n\n    // \xd0\xa2\xd0\xb8\xd0\xbf \xd1\x81\xd0\xbe\xd0\xb1\xd1\x8b\xd1\x82\xd0\xb8\xd1\x8f\n    List listEvent = new ArrayList();\n    Collections.addAll(listEvent, "Material", "Shit");\n    ArrayAdapter adapterEvent = new ArrayAdapter(this,R.layout.list_item,listEvent);\n    etType.setAdapter(adapterEvent);\n\n    // \xd0\xa2\xd0\xb8\xd0\xbf \xd1\x83\xd0\xb2\xd0\xb5\xd0\xb4\xd0\xbe\xd0\xbc\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f\n    List listNotif = new ArrayList();\n    //items.add("Material");\n    //items.add("Shit");\n    Collections.addAll(listNotif, "\xd0\x9a\xd0\xb0\xd0\xb6\xd0\xb4\xd1\x8b\xd0\xb9 \xd0\xb4\xd0\xb5\xd0\xbd\xd1\x8c", "\xd0\xa0\xd0\xb0\xd0\xb7 \xd0\xb2 2 \xd0\xb4\xd0\xbd\xd1\x8f", "\xd0\xa0\xd0\xb0\xd0\xb7 \xd0\xb2 3 \xd0\xb4\xd0\xbd\xd1\x8f", "\xd0\xa0\xd0\xb0\xd0\xb7 \xd0\xb2 5 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb9", "\xd0\xa0\xd0\xb0\xd0\xb7 \xd0\xb2 \xd0\xbd\xd0\xb5\xd0\xb4\xd0\xb5\xd0\xbb\xd1\x8e", "\xd0\x9d\xd0\xb5 \xd0\xbd\xd0\xb0\xd0\xbf\xd0\xbe\xd0\xbc\xd0\xb8\xd0\xbd\xd0\xb0\xd1\x82\xd1\x8c");\n    //String [] ITEMS = new String[] {"S1", "S2", "S3"};\n    //ArrayAdapter<String> ad = new ArrayAdapter<String>(this, R.layout.list_item, ITEMS);\n    ArrayAdapter adapterNotif = new ArrayAdapter(this,R.layout.list_item, listNotif);\n    etNotif.setAdapter(adapterNotif);\n\n\n\n}\n\n@Override\npublic void onActivityResult(int requestCode, int resultCode, Intent data) {\n    super.onActivityResult(requestCode, resultCode, data);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这是我未来课程的代码,但其中还没有任何内容,因为我正在考虑日期。

\n
public class Event {\npublic String Name;\npublic String Date;   // I don\'t know what type of variable to specify here, so far I have specified a string.\npublic String Comment;\npublic String Type;\npublic String Notify;\n\n\n\nEvent()\n{\n    Name = "\xd0\xa1\xd0\xbe\xd0\xb1\xd1\x8b\xd1\x82\xd0\xb8\xd0\xb5";\n    Date = "Date";\n    Comment = "Comment";\n    Type = "Type";\n    Notify = "Notify";\n}\n
Run Code Online (Sandbox Code Playgroud)\n

}

\n

Gab*_*tti 9

要获取日期,请使用:

MaterialDatePicker<Long> picker = builder.build();

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

通过这种方式,您可以选择以毫秒为单位的日期。
如果你想格式化为字符串,你可以使用类似:

Calendar utc = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
utc.setTimeInMillis(selection);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String formatted = format.format(utc.getTime());
Run Code Online (Sandbox Code Playgroud)