我知道这个问题已经问了很多遍了。但其中大多数是特定的。就我而言,请尝试所有可能的解决方法。任何帮助表示赞赏吗? ps。我是一个初学者,我没有显示来自Java的一些代码,我确定它不会影响此处的问题。另外,我的主要功能是,打开一个带有日历的对话框,以在用户单击按钮(btn_pf_dob)时选择一个日期,而当用户选择它时,所选日期将显示在同一按钮上。>
错误:
java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.name.appname / com.example.name.appname.ProfileDetailsActivity}:java.lang.NullPointerException:尝试调用虚拟方法'void android.widget .Button.setOnClickListener(android.view.View $ OnClickListener)'在空对象引用上
Java:
public class ProfileDetailsActivity extends AppCompatActivity {
Button selectpfbirthdate;
DatePickerDialog datePickerDialog;
int year;
int month;
int dayOfMonth;
Calendar calendar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile_details);
selectpfbirthdate = findViewById(R.id.btn_pf_dob);
selectpfbirthdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH);
dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
datePickerDialog = new DatePickerDialog(ProfileDetailsActivity.this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day) {
selectpfbirthdate.setText(day + "/" + (month + 1) + "/" + year);
}
}, year, month, dayOfMonth);
//datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis());
datePickerDialog.show();
}
});
}
XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:background="@color/colorPrimaryDark"
style="@style/traNav"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ProfileDetailsActivity">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stretchColumns="1"
android:background="@color/colorPrimaryDark">
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="3dp"
android:layout_weight="1"
android:orientation="vertical">
<android.support.v7.widget.AppCompatTextView
android:layout_weight="1"
android:gravity="start"
android:padding="10dip"
android:text="@string/date_of_birth"
android:textColor="@android:color/background_light"
android:textSize="18sp"
/>
<Button
style="@style/et_background"
android:layout_height="match_parent"
android:layout_weight="1"
android:textAlignment="center"
android:gravity="start"
android:padding="10dip"
android:textColor="@android:color/background_dark"
android:background="#d3d4d5"
android:textSize="18sp"
android:hint="@string/pick_date"
android:textAllCaps="false"
android:id="@+id/selectpfbirthdate"/>
</TableRow>
</TableLayout>
</LinearLayout>
<Scrollview>
</LinearLayout>
编辑: 不好,我使用了错误的ID。谢谢。