Хотите улучшить этот вопрос? Переформулируйте вопрос, чтобы он соответствовал тематике «Stack Overflow на русском».
Закрыт 10 месяцев назад.
я только еще учусь и пытаюсь сделать выбор даты и времени в Activity но при компиляции выводится ошибка Unable to start activity ComponentInfo{com.example.test03datetime/com.example.test03datetime.MainActivity}: java.lang.NullPointerException и компилятор ругяется на метод setInitialDate(); если его закомментировать то активити запускается но при нажатии на выбор даты приложение падает. Делаю в аналогии с примером который описан тут
Буду признателен за любую помощь.
Ниже прилагаю лог компилятора и исходный код
04-22 07:41:33.499 3584-3584/? D/dalvikvm: VFY: replacing opcode 0x71 at 0x0014
04-22 07:41:33.507 3584-3584/? D/AndroidRuntime: Shutting down VM
04-22 07:41:33.507 3584-3584/? W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xa4cf7b20)
04-22 07:41:33.511 3584-3584/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.test03datetime, PID: 3584
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test03datetime/com.example.test03datetime.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.example.test03datetime.MainActivity.setInitialDate(MainActivity.java:64)
at com.example.test03datetime.MainActivity.onCreate(MainActivity.java:27)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
activity_main
<LinearLayout android:layout_width="395dp"
android:layout_height="715dp"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<EditText
android:id="@+id/editTextDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:inputType="textPersonName"
android:text="Date"
android:onClick="onClickDate"/>
<EditText
android:id="@+id/editTextTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:inputType="textPersonName"
android:text="Time"
android:onClick="onClickTime"/>
MainActivity.java
package com.example.test03datetime;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.format.DateUtils;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
EditText remindDate;
EditText remindTime;
Calendar date, time = Calendar.getInstance();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );
remindDate = findViewById( R.id.editTextDate );
remindTime = findViewById( R.id.editTextTime );
setInitialDate();
setInitialTime();
}
// установка начальнго времени
private void setInitialTime() {
remindTime.setText( DateUtils.formatDateTime( this,
time.getTimeInMillis(),
DateUtils.FORMAT_SHOW_TIME
) );
}
public void onClickTime(View view) { // выбор времени
new TimePickerDialog( MainActivity.this, t,
time.get( Calendar.HOUR_OF_DAY ),
time.get( Calendar.MINUTE ), true ).show();
}
//установка обработчика времени
TimePickerDialog.OnTimeSetListener t = new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
time.set( Calendar.HOUR_OF_DAY, hourOfDay );
time.set( Calendar.MINUTE, minute );
setInitialTime();
}
};
// установка начальной даты
private void setInitialDate() {
remindDate.setText( DateUtils.formatDateTime( this,
date.getTimeInMillis(),
DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR
) );
}
public void onClickDate(View view) { // выбор даты
new DatePickerDialog( MainActivity.this, d,
date.get( Calendar.YEAR ),
date.get( Calendar.MONTH ),
date.get( Calendar.DAY_OF_MONTH ) ).show();
}
// установка обработчика даты
DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
date.set( Calendar.YEAR, year );
date.set( Calendar.MONTH, month );
date.set( Calendar.DAY_OF_MONTH, dayOfMonth );
setInitialDate();
}
};
}
У вас непроинициализирована переменная date из-за того что вы определили в одной строке Calendar date, time = Calendar.getInstance();.
Из-за этого строка
date.getTimeInMillis()
вызывает данное исключение
Продвижение своими сайтами как стратегия роста и независимости