gpt4 book ai didi

java - 选择日期后调用方法

转载 作者:行者123 更新时间:2023-12-01 10:09:19 27 4
gpt4 key购买 nike

我有一个单独的日期选择器类,我从 MainActivity 内部调用它。

public void showDateDialog(View v){
DateDialog dialog= new DateDialog(findViewById(R.id.textView));
FragmentTransaction ft=getFragmentManager().beginTransaction();
dialog.show(ft, "DatePicker");

我想做的是,在用户选择日期并按下“确定”后,检查所选日期是否在 SharedPreferences 中分配了字符串。我在 MainActivity 中为此创建了一个方法:

public void checkHours(){
SharedPreferences sharedPref = getSharedPreferences("savedHours", Context.MODE_PRIVATE);

String date = textView.getText().toString();

if (sharedPref.contains(date)) {
textView2.setText(sharedPref.getString(date, ""));
}
}

日期字符串是我从 DatePicker 中获得的字符串。我试图从 DateDialog 类中调用它:

 public void onDateSet (DatePicker view, int year, int month, int day){
String date=year+"-"+month+"-"+day;
textView.setText(date);
MainActivity.checkHours();
}

但是我收到错误“无法从静态上下文引用非静态方法”。有什么方法可以从 DateDialog 内部使用 checkHours() ,如果不是,我还能怎么做?

日期对话框类:

public class DateDialog extends DialogFragment implements DatePickerDialog.OnDateSetListener  {

TextView textView;
TextView textView2;
public DateDialog(View view){
textView=(TextView)view;
}

public Dialog onCreateDialog(Bundle savedInstanceState){
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);
return new DatePickerDialog(getActivity(),this,year,month,day);
}
public void onDateSet (DatePicker view, int year, int month, int day){
String date=year+"-"+month+"-"+day;
textView.setText(date);
MainActivity.checkHours();
}

}

最佳答案

您需要在 MainActivity 实例上调用方法 checkHours。您可以通过调用getActivity()(因为此类扩展了Fragment)并转换为MainActivity来获取实例。 (我假设 FragmentMainActivity 关联)。

替换

MainActivity.checkHours();

((MainActivity) getActivity()).checkHours();

关于java - 选择日期后调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36241781/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com