gpt4 book ai didi

android - 在 fragment 中显示 DialogFragment

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

我目前正在致力于将 Activity 转换为 Fragment。该 Activity 包含一个 Edittext,单击它会显示一个用于选择日期的 DialogFragmment。在 Activity 中,我会简单地调用它来显示对话框:

@SuppressLint("NewApi")
public void showDatePickerDialog(View v) {
DatePickerFragment newFragment = new DatePickerFragment(datePickerEditText);
newFragment.show(getFragmentManager(), "datePicker");
}

但是,这似乎无法显示 fragment 中的对话框。我在“显示”方法上遇到错误。明确地说,我想知道如何从 fragment 中显示 DialogFragment?

这是 DialogFragment 的代码

public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {

public EditText activity_edittext;

@SuppressLint("ValidFragment")
public DatePickerFragment(EditText edit_text) {
activity_edittext = edit_text;
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
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);
}

@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
activity_edittext.setText(String.valueOf(day ) + "/" + String.valueOf(month + 1) + "/" + String.valueOf(year));
}

最佳答案

我使用您的代码开发了一个示例,将继承关系更改为 FragmentActivity 并且工作正常。试试这个:

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity {

private EditText editText;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

editText = (EditText) this.findViewById(R.id.activity_edittext);
editText.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
showDatePickerDialog();
}
});

}

public void showDatePickerDialog() {
DatePickerFragment newFragment = new DatePickerFragment(editText);
newFragment.show(getSupportFragmentManager(), "datePicker");
}

使用的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">

<EditText android:id="@+id/activity_edittext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="text"/>

</LinearLayout>

关于android - 在 fragment 中显示 DialogFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16883322/

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