Я новичок. Пишу в Android Studio. В этом классе я выбираю дату и сохраняю её в переменную String date, после чего вызываю DisplayList
public class DatePickerClass extends AppCompatActivity implements DatePickerDialog.OnDateSetListener{
String date;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
showDatePicker();
}
public void showDatePicker () {
DatePickerDialog datePickerDialog = new DatePickerDialog(this, this,
Calendar.getInstance().get(Calendar.DAY_OF_MONTH),
Calendar.getInstance().get(Calendar.MONTH),
Calendar.getInstance().get(Calendar.YEAR));
datePickerDialog.show();
}
@Override
public void onDateSet(android.widget.DatePicker view, int year, int month, int dayOfMonth) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("d.M.yy");
Calendar calendar = new GregorianCalendar(year,month,dayOfMonth);
date = simpleDateFormat.format(calendar.getTime());
startActivity(new Intent(this, DisplayList.class));
}
Но здесь переменная date почему то null
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.display_list);
DatePickerClass datePickerClass = new DatePickerClass();
System.out.println("The date is: "+datePickerClass.date);
}
Объясните пожалуйста, что я делаю не так. Буду очень признателен.
Оператор new
создаёт новый объект, то есть совсем другой - в нём не может быть значений, которые вы записали в предыдущем.
В случае с активностями нужно передавать через экстра данные в Intent
.
public class DatePickerClass extends AppCompatActivity implements DatePickerDialog.OnDateSetListener{
String date;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
showDatePicker();
}
public void showDatePicker () {
DatePickerDialog datePickerDialog = new DatePickerDialog(this, this,
Calendar.getInstance().get(Calendar.DAY_OF_MONTH),
Calendar.getInstance().get(Calendar.MONTH),
Calendar.getInstance().get(Calendar.YEAR));
datePickerDialog.show();
}
@Override
public void onDateSet(android.widget.DatePicker view, int year, int month, int dayOfMonth) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("d.M.yy");
Calendar calendar = new GregorianCalendar(year,month,dayOfMonth);
date = simpleDateFormat.format(calendar.getTime());
Intent intent = new Intent(this, DisplayList.class);
// добавляем в интент данные
intent.putExtra("date_key", date)
startActivity(intent);
}
В новой активности получаем:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.display_list);
// получаем интент, которым запущена активность
Intent intent = getIntent();
// забираем свои данные
System.out.println("The date is: "+ intent.getStringExtra("date_key"));
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Зачем в package-private классе StringUTF16 делать публичные методы, если вне пакета к этому классу, а следовательно и к методам, всё равно нет доступа?
Только начинаю учить Java, скачал Intellij IDEAИ пробую скомпилировать самый обычную программу