gpt4 book ai didi

android - 在自定义对话框上使用 DatePicker

转载 作者:行者123 更新时间:2023-11-29 18:15:52 25 4
gpt4 key购买 nike

嗯,这就是我的代码。我想从自定义对话框的 DatePicker 中获取值。当我尝试初始化 dp (DatePicker) 时出现 nullPointerException 错误,我无法将 DatePicker 中的值获取到变量。 :/任何人都知道发生了什么事? (我有 1 个布局。主布局(R.layout.notifications)和对话框布局(R.layout.notifications_dialog)日期选择器在 notifications_dialog 布局上。

public class Notifications extends Activity {

static final int CUSTOM_DIALOG_ID = 0;
EditText Notification, Freq;
Button Save, Cancel;
int Year, Month , Day ;
DatePicker dp;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.notifications);
Button ok = (Button) findViewById(R.id.ok);
dp=(DatePicker)findViewById(R.id.notdate);


ok.setOnClickListener(new OnClickListener() {
public void onClick(View ovuinfo) {
showDialog(CUSTOM_DIALOG_ID);
}
});
}

@Override
protected Dialog onCreateDialog(int id) {
Dialog dialog = null;;
switch(id) {
case CUSTOM_DIALOG_ID:
dialog = new Dialog(Notifications.this);

dialog.setContentView(R.layout.notifications_dialog);
dialog.setTitle("Add Notification");

Notification = (EditText)dialog.findViewById(R.id.notification);
Freq = (EditText)dialog.findViewById(R.id.freq);
Save = (Button)dialog.findViewById(R.id.add);
Cancel = (Button)dialog.findViewById(R.id.canc);
dp=(DatePicker)findViewById(R.id.notdate);

final Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int monthOfYear = cal.get(Calendar.MONTH);
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);

// here is the problem!
dp.init(year, monthOfYear, dayOfMonth, new OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
Year = year;
Month = monthOfYear;
Day = dayOfMonth;
}
});

Save.setOnClickListener(SaveOnClickListener);
Cancel.setOnClickListener(CancelOnClickListener);
break;
}
return dialog;
}

private Button.OnClickListener SaveOnClickListener = new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
String not = Notification.getText().toString();
String fre = Freq.getText().toString();

Toast toast = Toast.makeText(getApplicationContext(), not+":"+fre+":"+Day+"-"+Month+"-"+Year, Toast.LENGTH_SHORT);
toast.show();
}
};

private Button.OnClickListener CancelOnClickListener = new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
dismissDialog(CUSTOM_DIALOG_ID);
}
};

}

最佳答案

对于初学者,您不需要在 onCreate() 中使用这一行:

dp=(DatePicker)findViewById(R.id.notdate);

由于您的 DatePicker View 不在屏幕上,因此这将在您的 onCreate() 中返回 null 给您;

在 onCreateDialog 内部,我认为您只需要做到这一点:

dp = (DatePicker)dialog.findViewById(R.id.notdate);

这应该可以修复您的空指针。

关于android - 在自定义对话框上使用 DatePicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8112534/

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