Android 从声明为public void的方法中检索值
大家好,我是Android和Java新手,我正在编写一个日期选择器片段类,它扩展了DialogFragment,并实现了DatePickerDialog.OnDateSetListener,因此我必须声明方法Android 从声明为public void的方法中检索值,android,picker,Android,Picker,大家好,我是Android和Java新手,我正在编写一个日期选择器片段类,它扩展了DialogFragment,并实现了DatePickerDialog.OnDateSetListener,因此我必须声明方法public void onDateSet(DatePicker视图,int year,int month,int day),在其中,我正在公共字符串变量中设置新日期 是否可以在我的主要活动中使用此公共字符串变量在文本视图中显示值?如果是,怎么做 我的主要活动代码是: public clas
public void onDateSet(DatePicker视图,int year,int month,int day)
,在其中,我正在公共字符串变量中设置新日期
是否可以在我的主要活动中使用此公共字符串
变量在文本视图
中显示值?如果是,怎么做
我的主要活动代码是:
public class TARForm extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener {
EditText departuredate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tarform);
departuredate = (EditText) findViewById(R.id.departure_date);
}
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker");
}
}
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{
int selectyear, selectmonth, selectday;
public String date;
@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);
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
selectday = day;
selectmonth = month+1;
selectyear = year;
date = selectday + "-" + selectmonth + "-" + selectyear;
}
}
和日期选择器片段
代码为:
public class TARForm extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener {
EditText departuredate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tarform);
departuredate = (EditText) findViewById(R.id.departure_date);
}
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker");
}
}
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{
int selectyear, selectmonth, selectday;
public String date;
@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);
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
selectday = day;
selectmonth = month+1;
selectyear = year;
date = selectday + "-" + selectmonth + "-" + selectyear;
}
}
如果您能提供这些信息,我如何将“日期”输入MainActivity departuredate?谢谢。您可以在onDateSet()方法中的片段中尝试以下代码
//In your actiivty
String date=null;
public void setDate(String date){
this.date=date;
//set this date in your text View
}
//In your fragment
Context context;
@Override
public void onAttach(Context context){
this.context=context;
}
public void onDateSet(DatePicker view, int year, int month, int day){
String date=//get Date over here
((TARForm)context).setDate(date)
}
public void onDateSet(DatePicker view, int year, int month, int day) {
selectday = day;
selectmonth = month+1;
selectyear = year;
date = selectday + "-" + selectmonth + "-" + selectyear;
if(getActivity() instanceOf TARForm){
((TARForm)getActivity()).departuredate.setText(date);
}
}
并在您的TARForm活动中制作公共编辑文本发布日期代码>如果你的活动和片段在不同的文件夹中你是否可以用一个例子解释一下,我是android新手。你是否像我说的那样尝试过?好的,让我知道应用程序在测试时崩溃了。错误:android.util.SuperNotCalledException:Fragment DatePickerFragment{884caec#0 datePicker}未调用super.onAttach()。是的,在onAttach()中,您必须在此之前调用super.onAttach()。context=contextI正在共享我的主要活动和Fragment类的代码。请帮助。您可以使用OnDismissListener
,请检查此使用界面/回调更新我的答案check@rodaxyz请接受答案以结束此问题