2 回答

TA貢獻1806條經(jīng)驗 獲得超8個贊
顯然#getActivity() 在附加片段之前為空。
您應(yīng)該嘗試將賦值代碼放在#onCreateDialog()方法中:
TextView moon_ra;
@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);
moon_ra = (TextView)getActivity().findViewById(R.id.moon_ra);
return new DatePickerDialog(getActivity(), this, yy, mm, dd);
}

TA貢獻1859條經(jīng)驗 獲得超6個贊
您可以使用從到onActivityResult()傳遞數(shù)據(jù),如下所示。SelectDateFragmentMoonFragment
SelectDateFragment如下所示在您的內(nèi)部調(diào)用MoonFragment。
moon_date.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
DialogFragment newFragment = new SelectDateFragment();
newFragment.setTargetFragment(this, 111); // add this line
newFragment.show(getFragmentManager(), "DatePicker");
}
});
發(fā)送數(shù)據(jù)從SelectDateFragment到MoonFragment新日期設(shè)置時
public void populateSetDate(int year, int month, int day) {
String newDate = month+"/"+day+"/"+year;
Intent intent = new Intent();
intent.putStringExtra("date", newDate);
getTargetFragment().onActivityResult(getTargetRequestCode(), 111, intent);
}
要接收數(shù)據(jù),請使用onActivityResult您的MoonFragment
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 111) {
String newDate = data.getStringExtra("date");
// here you can update your textview
moon_ra.setText(newDate); // make sure your moon_ra textview is decleared globally
}
}
添加回答
舉報