我想在點擊圖像按鈕時彈出日期選擇器對話框,然後用戶選擇日期將顯示在編輯文本字段中。我遵循Android開發人員的指導方針,通過DialogFragment使用,併成功彈出日期選擇器對話框。用戶可以選擇對話框中的日期,但當用戶按下設置按鈕時會崩潰。Edittext不可能從日期選擇器得到用戶解決的日期
事實上,我懷疑這是onDateSet中LayoutInflater中getContext()的問題,因爲有一句話說「調用所需的API級別23(當前API:12)」,但我無法想象它瞭解如何解決它。
這是Android開發人員推薦調用getContext()獲取活動上下文,並不確定問題發生的原因。
我試圖使用@TargetApi,但它表示這隻用於該方法。
有人能讓我知道我的代碼中的問題在哪裏嗎?
的邏輯說: java.lang.NoSuchMethodError:com.test.testapplication.DatePickerFragment.getContext
DatePickerFragment
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
final Calendar calendar = Calendar.getInstance();
int YEAR;
int MONTH;
int DAY;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
YEAR = calendar.get(Calendar.YEAR);
MONTH = calendar.get(Calendar.MONTH);
DAY = calendar.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, YEAR, MONTH, DAY);
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
YEAR = year;
MONTH = monthOfYear;
DAY = dayOfMonth;
String dateFormat = "MM/dd/yy";
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, Locale.CHINESE);
View fragment = LayoutInflater.from(getContext()).inflate(R.layout.activity_datepickerdialogfragment, null);
EditText editText = (EditText) fragment.findViewById(R.id.edittext);
editText.setText(sdf.format(calendar.getTime()));
}
}
MainActivity
public class DPDFActivity extends FragmentActivity {
EditText editText;
ImageButton btn;
DialogFragment datePickerFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_datepickerdialogfragment);
editText = (EditText) findViewById(R.id.edittext);
btn = (ImageButton) findViewById(R.id.btn);
btn.setOnClickListener(new showDateDialog());
}
public class showDateDialog implements View.OnClickListener {
@Override
public void onClick(View v) {
datePickerFragment = new DatePickerFragment();
datePickerFragment.show(getFragmentManager(), "DatePicker");
}
}
}
您的建議工作,使其更容易理解,並已執行到我的程序。我只關心我們是否可以按照Android開發者的建議來做到這一點。 – Troy