【发布时间】:2014-02-18 22:35:20
【问题描述】:
在 Activity 中,我根据选中的单选按钮调用不同的片段,打开不同的片段,用户应该输入不同的内容。 为此,用户必须“设置日期”和“设置时间”。
我正在使用这里的代码... click here.
当我在 Activity 中尝试它时它工作正常.. 但是当我将代码放入片段时,
showDialog(DATE_DIALOG_ID);
和
showDialog(TIME_DIALOG_ID);
有错误
方法 showDialog(int) 未定义类型 new View.OnclickListener(){
和
return new DatePickerDialog(this, datetoperform, currentYear, currentMonth, currentDay);
有错误
构造函数 DatePickerDialog(OrderTypeGeneralOrderFragment, DatePickerDialog.OnDateSetListener, int, int, int) 未定义
和
return new TimePickerDialog(this, timeDate, hour, minute, false);
有错误
构造函数
**TimePickerDialog(OrderTypeGeneralOrderFragment, TimePickerDialog.OnTimeSetListener, int, int, boolean)** 未定义
这是我的代码:
package info.androidhive.slidingmenu;
import java.util.Calendar;
import android.os.Bundle;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.Fragment;
import android.app.TimePickerDialog;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TimePicker;
public class OrderTypeGeneralOrderFragment extends Fragment{
private EditText subjectTextBox;
private int currentYear;
private int currentMonth;
private int currentDay;
static final int DATE_DIALOG_ID = 0;
static final int TIME_DIALOG_ID = 1;
int hour;
int minute;
private Button btDate;
private Button btTime;
private TextView timeDisplay;
private TextView dateDisplay;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstancesState)
{
return inflater.inflate(R.layout.generalorderfragment, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
Button btDate =(Button) getView().findViewById(R.id.btnDate);
btDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showDialog(DATE_DIALOG_ID);
}
});
final Calendar c = Calendar.getInstance();
currentYear = c.get(Calendar.YEAR);
currentMonth = c.get(Calendar.MONTH);
currentDay = c.get(Calendar.DAY_OF_MONTH);
Button btTime = (Button) getView().findViewById(R.id.btnTime);
btTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showDialog(TIME_DIALOG_ID);
}
});
final Calendar d = Calendar.getInstance();
hour = d.get(Calendar.HOUR_OF_DAY);
minute = d.get(Calendar.MINUTE);
TextView timeDisplay = (TextView) getView().findViewById(R.id.txtTime);
TextView dateDisplay = (TextView) getView().findViewById(R.id.txtDate);
EditText subjectTextBox = (EditText) getView().findViewById(R.id.subjectTextBoxId);
}
//--DATE PICKER--//
// Use the current date as the default date in the picker
protected Dialog onCreateDialog4(int id) {
switch (id) {
case DATE_DIALOG_ID:
return new DatePickerDialog(this, datetoperform, currentYear, currentMonth, currentDay);
case TIME_DIALOG_ID:
return new TimePickerDialog(this, timeDate, hour, minute, false);
}
return null;
}
private DatePickerDialog.OnDateSetListener datetoperform = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int month, int day) {
// if (c1.isChecked()) {
dateDisplay.setText("Order will be performed on: "
+ (month + 1) + "-" + day + "-" + year + ".");
// }
}
};
private TimePickerDialog.OnTimeSetListener timeDate = new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hours, int minutes) {
timeDisplay.setText("on " + hours + ":"
+ minutes + ".");
}
};
/* public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}*/
//--//DATE PICKER--//
}
我在想..也许可以放这部分
protected Dialog onCreateDialog4(int id) {
switch (id) {
case DATE_DIALOG_ID:
return new DatePickerDialog(this, datetoperform, currentYear, currentMonth, currentDay);
case TIME_DIALOG_ID:
return new TimePickerDialog(this, timeDate, hour, minute, false);
}
return null;
}
private DatePickerDialog.OnDateSetListener datetoperform = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int month, int day) {
// if (c1.isChecked()) {
dateDisplay.setText("Order will be performed on: "
+ (month + 1) + "-" + day + "-" + year + ".");
// }
}
};
private TimePickerDialog.OnTimeSetListener timeDate = new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hours, int minutes) {
timeDisplay.setText("on " + hours + ":"
+ minutes + ".");
}
};
/* public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}*/
//--//DATE PICKER--//
}
在调用这个片段的活动内部。
如果没关系.. 我将如何在此片段中调用该部分?
【问题讨论】:
标签: java android datepicker fragment showdialog