Android fragments 如何在不同类的Edittext中设置值
我用的是时间碎片。点击编辑文本框,我就打开了这样的时间选择器Android fragments 如何在不同类的Edittext中设置值,android-fragments,android-timepicker,Android Fragments,Android Timepicker,我用的是时间碎片。点击编辑文本框,我就打开了这样的时间选择器 final FragmentManager fm = getFragmentManager(); timE.setOnClickListener(new OnClickListener() { @TargetApi(Build.VERSION_CODES.HONEYCOMB) @SuppressWarnings("deprecation") public void onClick(View v) {
final FragmentManager fm = getFragmentManager();
timE.setOnClickListener(new OnClickListener() {
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@SuppressWarnings("deprecation")
public void onClick(View v) {
FragmentManager fm = getFragmentManager();
dialogFragment2=new DateTimeDialogFragment(ActivityGroup4.context ,2);
dialogFragment2.setContextandView(appState,vi,timE);
System.out.println(vi+" view from meeting list ");
dialogFragment2.setRetainInstance(true);
dialogFragment2.show(fm, "fragment_name");
}
});
这导致时间选择器打开。这里,appState
是上下文对象,vi是可扩展列表适配器groupchildview
方法的视图对象,用于访问datetime
片段类中的edittext
在DateTimeDialogFragment
中,当选择器打开并单击“设置”按钮时,我们会得到该值,但该值不会显示在上次活动的edittext
框中
public class DateTimeDialogFragment extends DialogFragment implements
OnDateChangedListener, OnTimeChangedListener {
// Define constants for date-time picker.
String time_and_date = "";
int i = 0, j = 0;
//StringBuilder click = new StringBuilder();;
public final static int DATE_PICKER = 1;
public final static int TIME_PICKER = 2;
public final static int DATE_TIME_PICKER = 3;
// DatePicker reference
private DatePicker datePicker;
// TimePicker reference
private TimePicker timePicker;
// Calendar reference
private Calendar mCalendar;
// Define activity
private Activity activity;
// Define Dialog type
private int DialogType;
// Define Dialog view
private View mView;
// Constructor start
public DateTimeDialogFragment(Activity activity) {
this(activity, DATE_TIME_PICKER);
}
Context context;
View v;
EditText refrenced;
public void setContextandView(Context context, View v, EditText refrenced) {
this.refrenced = refrenced;
this.context = context;
this.v = v;
//time_and_date = refrenced.getText().toString();
}
@SuppressLint("ValidFragment")
public DateTimeDialogFragment(Activity activity, int DialogType) {
this.activity = activity;
this.DialogType = DialogType;
// Inflate layout for the view
// Pass null as the parent view because its going in the dialog layout
LayoutInflater inflater = activity.getLayoutInflater();
mView = inflater.inflate(R.layout.date_time_dialog, null);
// Grab a Calendar instance
mCalendar = Calendar.getInstance();
// Init date picker
datePicker = (DatePicker) mView.findViewById(R.id.datePicker1);
datePicker.init(mCalendar.get(Calendar.YEAR),
mCalendar.get(Calendar.MONTH),
mCalendar.get(Calendar.DAY_OF_MONTH), this);
// Init time picker
timePicker = (TimePicker) mView.findViewById(R.id.timePicker1);
// Set default Calendar and Time Style
setIs24HourView(false);
setCalendarViewShown(false);
switch (DialogType) {
case DATE_PICKER:
timePicker.setVisibility(View.GONE);
break;
case TIME_PICKER:
datePicker.setVisibility(View.GONE);
break;
}
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
Builder builder = new AlertDialog.Builder(activity);
// Set the layout for the dialog
builder.setView(mView);
// Set title of dialog
builder.setMessage("Set Date")
// Set Ok button
.setPositiveButton("Set",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User ok the dialog
// System.out.println(time_and_date);
if (time_and_date != "") {
if (time_and_date.length() <= 5) {
System.out.println(time_and_date + " "
+ v);
// EditText time = (EditText)
// v.findViewById(R.id.time_specially_for_fragment);
System.out.println(refrenced.getText());
System.out.println("sss");
refrenced.setText(time_and_date);
refrenced.setVisibility(View.INVISIBLE);
;
} else {
System.out.println(time_and_date);
// EditText time = (EditText)
// v.findViewById(R.id.date_specially_for_fragment);
// time.setText(time_and_date);
}
} else {
System.out.println("went wrong");
if (DialogType ==2) {
int hour = mCalendar
.get(Calendar.HOUR_OF_DAY);
int min = mCalendar
.get(Calendar.MINUTE);
time_and_date = "" + hour + ":" + (min);
System.out.println(time_and_date);
i = j = 0;
} else if (DialogType==1
) {
int day = mCalendar
.get(Calendar.DAY_OF_MONTH);
int month = mCalendar
.get(Calendar.MONTH);
int year = mCalendar.get(Calendar.YEAR);
time_and_date=""+day+"/"+(month+1)+"/"+year;
i=j=0;
System.out.println(time_and_date);
}
}
}
})
// Set Cancel button
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
DateTimeDialogFragment.this.getDialog()
.cancel();
}
});
// Create the AlertDialog object and return it
return builder.create();
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
timePicker.setOnTimeChangedListener(this);
}
// Convenience wrapper for internal Calendar instance
public int get(final int field) {
return mCalendar.get(field);
}
// Convenience wrapper for internal Calendar instance
public long getDateTimeMillis() {
return mCalendar.getTimeInMillis();
}
// Convenience wrapper for internal TimePicker instance
public void setIs24HourView(boolean is24HourView) {
timePicker.setIs24HourView(is24HourView);
}
// Convenience wrapper for internal TimePicker instance
public boolean is24HourView() {
return timePicker.is24HourView();
}
// Convenience wrapper for internal DatePicker instance
public void setCalendarViewShown(boolean calendarView) {
datePicker.setCalendarViewShown(calendarView);
}
// Convenience wrapper for internal DatePicker instance
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public boolean CalendarViewShown() {
return datePicker.getCalendarViewShown();
}
// Convenience wrapper for internal DatePicker instance
public void updateDate(int year, int monthOfYear, int dayOfMonth) {
datePicker.updateDate(year, monthOfYear, dayOfMonth);
}
// Convenience wrapper for internal TimePicker instance
public void updateTime(int currentHour, int currentMinute) {
timePicker.setCurrentHour(currentHour);
timePicker.setCurrentMinute(currentMinute);
}
public String getDateTime() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",
Locale.US);
return sdf.format(mCalendar.getTime());
}
// Called every time the user changes DatePicker values
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// Update the internal Calendar instance
i++;
// click='Date';
mCalendar.set(year, monthOfYear, dayOfMonth,
mCalendar.get(Calendar.HOUR_OF_DAY),
mCalendar.get(Calendar.MINUTE));
time_and_date = "" + dayOfMonth + "/" + monthOfYear + "/" + year;
}
// Called every time the user changes TimePicker values
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
// Update the internal Calendar instance
j++;
mCalendar.set(mCalendar.get(Calendar.YEAR),
mCalendar.get(Calendar.MONTH),
mCalendar.get(Calendar.DAY_OF_MONTH), hourOfDay, minute);
time_and_date = hourOfDay + ":" + minute;
System.out.println("from time changing " + time_and_date);
// gettime();
}
String getdate() {
return time_and_date;
}
String gettime() {
return time_and_date;
}
}
公共类DateTimeDialogFragment扩展DialogFragment实现
OnDateChangedListener,OnTimeChangedListener{
//为日期时间选择器定义常量。
字符串时间和日期=”;
int i=0,j=0;
//StringBuilder单击=新建StringBuilder();;
公共最终静态整数日期选择器=1;
公共最终静态整数时间选择器=2;
公共最终静态整数日期\时间\选择器=3;
//日期选择器引用
私人日期选择器日期选择器;
//时间选择器参考
私人时间选择器;
//日历参考
私人日历;
//定义活动
私人活动;
//定义对话框类型
私有int对话类型;
//定义对话框视图
私有视图;
//构造函数启动
公共DateTimeDialogFragment(活动){
这(活动、日期、时间、选择器);
}
语境;
观点五;
编辑文本引用;
public void setContextandView(上下文、视图v、编辑文本引用){
this.referenced=referenced;
this.context=上下文;
这个,v=v;
//时间和日期=referenced.getText().toString();
}
@SuppressLint(“有效碎片”)
公共DateTimeDialogFragment(活动,int DialogType){
这个。活动=活动;
this.DialogType=DialogType;
//膨胀视图的布局
//传递null作为父视图,因为它将在对话框布局中运行
LayoutInflater充气器=活动。getLayoutInflater();
mView=充气机。充气(R.layout.date\u time\u对话框,空);
//抓取一个日历实例
mCalendar=Calendar.getInstance();
//初始日期选择器
datePicker=(datePicker)mView.findViewById(R.id.datePicker1);
datePicker.init(mCalendar.get(Calendar.YEAR),
mCalendar.get(日历月),
mCalendar.get(日历.月日),this);
//初始时间选择器
timePicker=(timePicker)mView.findviewbyd(R.id.timePicker1);
//设置默认日历和时间样式
设置为24小时视图(假);
SetCalendarViewShowed(假);
开关(对话框类型){
案件日期/挑选人:
timePicker.setVisibility(View.GONE);
打破
案例时间\u选取器:
datePicker.setVisibility(View.GONE);
打破
}
}
@凌驾
创建对话框上的公共对话框(Bundle savedInstanceState){
//使用生成器类可以方便地构造对话框
Builder=新建AlertDialog.Builder(活动);
//设置对话框的布局
builder.setView(mView);
//设置对话框的标题
builder.setMessage(“设置日期”)
//设置Ok按钮
.setPositiveButton(“设置”,
新建DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
//用户确定对话框
//System.out.println(时间和日期);
如果(时间和日期!=“”){
if(时间和日期长度()没有人会看这么长的代码,要切中要害并且容易理解。它说在可扩展列表适配器的childview中有一个Edittext。当我们单击它时,它会跳转到另一个类以打开时间选择器。当通过单击“确定”按钮设置时间时,我们会得到值,但我不知道如何将该值粘贴到该e中dittext框。我已将该edittext的对象发送到此类,并希望不正确地粘贴选定的选取器值。但它不起作用。。。。。