gpt4 book ai didi

android - 使用打开的日期 DialogueFragment 在方向更改时强制关闭

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:48:00 26 4
gpt4 key购买 nike

我有一个 Activity ,我想要的是

Activity--> OnClick of Some layout (That has textview)-->Open Datepicker--> set selected value in txtvalue

我想通过以下代码使用 DialogFragment 访问 Datepicker。

package com.app.ourforms.date;

import java.util.Calendar;

import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.os.Bundle;
import android.util.Log;
import android.widget.DatePicker;
import android.widget.TextView;

public class DatePickerFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {

TextView txt;

public DatePickerFragment() {
}

public DatePickerFragment(TextView txt) {
this.txt = txt;
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceSateate) {

Log.i("TAG", "Inside onCreateDialog");
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) {
Log.i("TAG", "Inside onDateSet");
txt.setText(day + "/" + (month + 1) + "/" + year);
// Do something with the date chosen
}
}

以上代码在设备不改变其方向时工作正常。但是当显示日期选择器并且方向发生变化时,我正在强制关闭,如下所示

01-04 07:34:14.580: E/AndroidRuntime(2375): FATAL EXCEPTION: main
01-04 07:34:14.580: E/AndroidRuntime(2375): java.lang.NullPointerException
01-04 07:34:14.580: E/AndroidRuntime(2375): at com.app.ourforms.date.DatePickerFragment.onDateSet(DatePickerFragment.java:39)
01-04 07:34:14.580: E/AndroidRuntime(2375): at android.app.DatePickerDialog.tryNotifyDateSet(DatePickerDialog.java:148)
01-04 07:34:14.580: E/AndroidRuntime(2375): at android.app.DatePickerDialog.onClick(DatePickerDialog.java:116)
01-04 07:34:14.580: E/AndroidRuntime(2375): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
01-04 07:34:14.580: E/AndroidRuntime(2375): at android.os.Handler.dispatchMessage(Handler.java:99)
01-04 07:34:14.580: E/AndroidRuntime(2375): at android.os.Looper.loop(Looper.java:137)
01-04 07:34:14.580: E/AndroidRuntime(2375): at android.app.ActivityThread.main(ActivityThread.java:5039)
01-04 07:34:14.580: E/AndroidRuntime(2375): at java.lang.reflect.Method.invokeNative(Native Method)
01-04 07:34:14.580: E/AndroidRuntime(2375): at java.lang.reflect.Method.invoke(Method.java:511)
01-04 07:34:14.580: E/AndroidRuntime(2375): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
01-04 07:34:14.580: E/AndroidRuntime(2375): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
01-04 07:34:14.580: E/AndroidRuntime(2375): at dalvik.system.NativeStart.main(Native Method)

这是我调用DatePickerFragment的方法

public void showDatePickerDialog(View v) {
Log.i("TAG", "Inside showDatePickerDialog");
DialogFragment newFragment = new DatePickerFragment((TextView)v);
newFragment.show(getFragmentManager(), "datePicker");
}

请帮我摆脱这一切。提前致谢。

最佳答案

我不确定这个解决方案是否适合您,但您可以尝试一下。

您面临的问题是因为每次您的方向改变时您的 Activity 都会重新加载。您可以调用 OnConfigurationchanged() 方法,在 Menifest 文件中您可以将 Configuchanges 设置为 orientation|screensize

通过这样做,您的 Activity 将不会在方向更改时加载,并且您将不会再面对当前面临的问题。

可能对你有帮助。

关于android - 使用打开的日期 DialogueFragment 在方向更改时强制关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14153093/

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