gpt4 book ai didi

android - 方法 getApplicationContext() 未定义,构造函数 DatePickerDialog 未定义

转载 作者:行者123 更新时间:2023-11-30 02:46:45 30 4
gpt4 key购买 nike

我已经完成了这个link .但是给定的解决方案并没有解决我的问题。所有经验丰富的人都建议使用 getActivty().getApplicationContext()。但我使用的是普通类(class)而不是 Activity 。我正在获取所有 UI 值并初始化为我的 fragment 中的对象。所以从那里我试图将它保存在我的数据库中。我正在为未扩展任何内容的数据库使用普通类。

当我将值从主 fragment 传递到数据库类时出现两个错误:

  1. 构造函数 DatePickerDialog(TopRatedFragment, DatePickerDialog.OnDateSetListener, int, int, int) 未定义
  2. 创建方法 getApplicationContext()

请给我一些解决这个问题的想法。

这是我的 Fragment 类代码。

public class TopRatedFragment extends Fragment {
public EditText text1,text2,text3,text4;
Button date,save;
TextView textdate;
DatePicker datepicker;
ListView expenselist;
private int myear,mmonth,mday;
ArrayList<String> DayExpenseList = new ArrayList<String>();

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_main, container,
false);
text1 = (EditText) rootView.findViewById(R.id.editText1);
text2=(EditText) rootView.findViewById(R.id.editText2);
text3=(EditText) rootView.findViewById(R.id.editText3);
text4=(EditText) rootView.findViewById(R.id.editText4);
textdate = (TextView) rootView.findViewById(R.id.textView6);
save = (Button) rootView.findViewById(R.id.button1);
date=(Button) rootView.findViewById(R.id.datepicker);
expenselist = (ListView) rootView.findViewById(R.id.listView1);
date.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
DatePickerDialog dpd = new DatePickerDialog(TopRatedFragment.this, mDateSetListener, myear, mmonth, mday);
dpd.show();
}
});
final Calendar c = Calendar.getInstance();
myear = c.get(Calendar.YEAR);
mmonth = c.get(Calendar.MONTH);
mday = c.get(Calendar.DAY_OF_MONTH);
save.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String entertainment = text1.getText().toString();
String food = text2.getText().toString();
String medicine = text3.getText().toString();
String travel = text4.getText().toString();
DBHelper helper = new DBHelper(getApplicationContext());
helper.insertValues(entertainment, food, medicine, travel);
DayExpenseList = helper.getValues();
setAdapter();
}
});
return rootView;
}

private void setAdapter()
{
expenselist.setAdapter(new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,DayExpenseList));
}

private void updateDisplay() {
// TODO Auto-generated method stub
textdate.setText(new StringBuilder()
.append(mday).append("-").append(mmonth+1).append("-")
.append(myear));
}

private DatePickerDialog.OnDateSetListener mDateSetListener = new
DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
myear=year;
mmonth=monthOfYear;
mday=dayOfMonth;
updateDisplay();
}
};
}

最佳答案

getApplicationContext()仅在 Context 和扩展它的所有类(包括 Activity 及其变体)中可用。但是,Fragment 没有扩展它,因此没有那个方法。

相反,Fragment 取决于Activity 的上下文,可以通过调用 getActivity() 访问它.

错误说:

  1. The constructor DatePickerDialog(TopRatedFragment, DatePickerDialog.OnDateSetListener, int, int, int) is undefined
  2. create method getApplicationContext()

第一个是因为DatePickerDialog期望第一个参数为 Context,您在其中放置 Fragment,它不是 Context 的子类。

第二个上面已经解释过了。

将代码改为

DatePickerDialog dpd = new DatePickerDialog(getActivity(), mDateSetListener,
myear, mmonth, mday);

DBHelper helper = new DBHelper(getActivity());

应该修复错误。

关于android - 方法 getApplicationContext() 未定义,构造函数 DatePickerDialog 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24880424/

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