我有一個帶有TextView的片段。在單擊TextView時,我想調用另一個片段中的DatePicker,並且所選日期應顯示在前一個片段的TextView中。ANDROID:使用片段中的DatePicker
但是,我收到以下錯誤。
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
at com.example.vkrishnakumar.finallogin.FlightFragment.onCreate(FlightFragment.java:34)
我按照下面的鏈接參考。 Implementing DatePicker in Fragment
這是我的包含TextView的Fragment的代碼。
import android.support.v4.app.DialogFragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class FlightFragment extends Fragment {
private TextView depDate;
public FlightFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
depDate = (TextView) getView().findViewById(R.id.book_f_dep);
depDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment newFragment = new SelectDateFragment();
newFragment.show(getFragmentManager(), "DatePicker");
}
});
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_flight, container, false);
}
}
這是FlightFragment中使用的SelectDateFragment。
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.widget.DatePicker;
import android.widget.TextView;
import java.util.Calendar;
public class SelectDateFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {
public SelectDateFragment() {
// Required empty public constructor
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar calendar = Calendar.getInstance();
int yy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, yy, mm, dd);
}
public void onDateSet(DatePicker view, int yy, int mm, int dd) {
populateSetDate(yy, mm+1, dd);
}
public void populateSetDate(int year, int month, int day) {
TextView t= (TextView)getView().findViewById(R.id.book_f_dep);
t.setText(month + "/" + day + "/" + year);
}
}
'R.id.book_f_dep'爲空。發佈代碼爲Fragment設置ID爲 –
問題的TextView t =(TextView)getView()。findViewById(R.id.book_f_dep);' –