【发布时间】:2016-03-14 19:32:35
【问题描述】:
我正在尝试从 Datepicker 中更新 TextView,但是我收到了错误
“不能从静态上下文引用非静态方法(updateDateTextView(long))”
这是我的 DatePickerFragment.java
public class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
Calendar calendar = new GregorianCalendar(year, month, day);
long timestamp = TimeUnit.MILLISECONDS.toSeconds(calendar.getTimeInMillis());
AddItem.updateDateTextView(timestamp);
}
}
这是我在 AddItem.java 中的函数,它是一个 Activity。
public class AddItem extends AppCompatActivity {
Context ctx = this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_item);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker");
}
public void updateDateTextView(long timestamp){
TextView textViewToChange = (TextView) findViewById(R.id.openDate);
Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.setTimeInMillis(timestamp);
String date = DateFormat.format("dd-MM-yyyy", cal).toString();
textViewToChange.setText(date);
}
}
【问题讨论】:
-
您正在从静态方法调用方法 updateDateTextView...请发布 MCVE....
-
我在原帖中添加了 MCVE
标签: java android function static datepicker