gpt4 book ai didi

java - 如何在 Fragment 中使用 showDialog() 和 DatePickerDialog()?

转载 作者:行者123 更新时间:2023-11-29 05:28:39 25 4
gpt4 key购买 nike

在一个 Activity 中,我根据选中的单选按钮调用不同的 fragment ,不同的 fragment 打开时包含用户应输入的不同内容。为此,用户必须“设置日期”和“设置时间”。

我正在使用这里的代码... click here .

当我在 Activity 中尝试它时它工作正常..但是当我把代码放在 fragment 中时,

 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--//





}

在调用此 fragment 的 Activity 中。

如果没问题..我将如何称呼这个 fragment 中的那个部分?

最佳答案

您需要获取 Activity 句柄才能调用 showDialog()。尝试调用 getActivity().showDialog()

关于java - 如何在 Fragment 中使用 showDialog() 和 DatePickerDialog()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21866965/

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