自定义对话框片段

2023-11-24

我正在尝试创建一个类似于DatePickerDialog. The Dialog我正在创建的应该为用户提供一系列图像供他们选择。

我相信我已经成功创建了数组并向其中添加了正确的图像,我现在遇到的问题是如何获取Dialog现身?我应该返回什么?

我已经调查过AlertDialogs等等,但我不确定如何实施它们。

更新:已修复问题,下面所示的代码正在运行

图片选择器

public class PicturePickerFragment extends DialogFragment {

ArrayList<Integer> imageList = new ArrayList<Integer>();

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    // fill an array with selected images

    String title = "Picture";

    imageList.add(R.drawable.barbershop);
    imageList.add(R.drawable.wedding);
    imageList.add(R.drawable.meeting);
    imageList.add(R.drawable.barbershop);

    // return alertdialog
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

    LayoutInflater inflater = getActivity().getLayoutInflater();

    // Inflate and set the layout for the dialog
    // Pass null as the parent view because its going in the dialog layout
    builder.setView(inflater.inflate(R.layout.activity_create, null))
            .setTitle(R.string.event_type)
            .setPositiveButton(R.string.select_picture,
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog,
                                int which) {
                            // call the method on the parent activity when
                            // user click the positive button
                        }
                    });
    return builder.create();
}

}

以供参考

public class DatePickerFragment extends DialogFragment implements
    DatePickerDialog.OnDateSetListener {

@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);

    // Create a new instance of DatePickerDialog and return it
    return new DatePickerDialog(getActivity(), this, year, month, day);
}

public void onDateSet(DatePicker view, int year, int month, int day) {
    // Do something with the date chosen by the user
    month++;
    String dateString = month + "/" + day + "/" + year;
    Button b = (Button) getActivity().findViewById(R.id.btn_date);
    b.setText(dateString);
}
}

片段将像这样使用

<Button
    android:id="@+id/btn_picture"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_marginBottom="15dp"
    android:layout_marginTop="15dp"
    android:layout_weight="1"
    android:background="@null"
    android:drawablePadding="15dp"
    android:onClick="showPicturePickerDialog"
    android:drawableTop="@drawable/ico_picture"
    android:text="Picture"
    android:textColor="@color/darkbrown"
    android:textSize="20sp" />

如果您要在其中打开DialogFragment延伸FragmentActivity,你应该执行:

PicturePickerFragment dialog = new PicturePickerFragment();
dialog.show(getSupportFragmentManager(), "YourDialog");

您还需要在方法中膨胀对话框布局文件onCreateDialog对话框片段类的。

Using AlertDialog.Builder您可以轻松实现这一切,例如

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

LayoutInflater inflater = getActivity().getLayoutInflater();

// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog layout
builder.setView(inflater.inflate(R.layout.dialoglayout, null))
 .setTitle(R.string.dialog_title)
 .setPositiveButton(R.string.pos_button, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // call the method on the parent activity when user click the positive button
    }
})
 .setNegativeButton(R.string.neg_button, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // call the method on the parent activity when user click the negative button
    }
});
return builder.create();

上面有很多例子http://developer.android.com/reference/android/app/DialogFragment.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义对话框片段 的相关文章

随机推荐

  • 调试 Sunspot 上的 Solr 搜索查询

    在 Rails 上使用 Sunspot gem 时如何调试 Solr 搜索查询 我有一些查询返回了异常高的分数 我试图弄清楚为什么会发生这种情况 似乎没有任何调试信息暴露给Sunspot 所以我认为我需要直接通过Solr进行调试 幸运的是
  • 文字闪烁 jQuery

    在 jQuery 中使文本闪烁的简单方法是什么以及停止它的方法是什么 必须适用于 IE FF 和 Chrome 谢谢 一个让某些文本闪烁的插件对我来说听起来有点矫枉过正 尝试这个 blink each function var elem t
  • 如何从 .h5 文件正确加载带有自定义层的 Keras 模型?

    我构建了一个带有自定义层的 Keras 模型 并将其保存到 h5通过回调文件ModelCheckPoint 当我在训练后尝试加载该模型时 出现以下错误消息 init missing 1 required positional argumen
  • 有什么理由使用 System.Uri 吗?

    我仔细看了一下 似乎它已经从根本上坏了 只有 5 个实例方法未标记为过时 似乎没有任何内置方法 解析查询字符串变量 没有方法可以改变 Uri 例如附加新的查询变量 HttpUtility 适用于字符串 不适用于 URI 那么它有什么好处吗
  • 为什么我的 WPF 应用程序中出现“无法加载 DLL 'sqlite3'”?

    我将我认为必要的 SQLite 和 sqlite net 包添加到我的应用程序中 但是 在运行它时 我遇到了一个异常 System DllNotFoundException 未被用户代码处理 HResult 2146233052 消息 无法
  • 加快 write.table 的性能

    我有一个data frame我想把它写出来 我的尺寸data frame为 256 行 x 65536 列 有什么更快的替代品write csv data table fwrite 由 Otto Seiskari 贡献 提供 1 9 8 版
  • 使用另一个列表的元素名称创建空列表

    假设我们有一个列表my list a b c 我想做的是创建空列表 a b c 这样我就可以根据它们的名称向它们添加一些元素 以编程方式创建变量是一个非常糟糕的主意 使用这些名称作为键创建一个字典 my lists key for key
  • 为什么 OpenJDK 11 Java 垃圾收集器*减少*此示例程序中的可用内存?

    当我使用 OpenJDK 11 Windows 10 上的 Zulu 发行版 编译并运行以下非常简单的 Java 程序时 public class GCTest public static void main String args Sys
  • 使用 VBA 在 Excel 工作表中创建表

    我下面有这段代码 它将自动选择一个范围 有谁知道如何添加代码以在选定范围内创建表格 Thanks Sub DynamicRange Best used when first column has value on last row and
  • Windows 上的 Python 子进程输出?

    我在从子进程标准输出管道获取输出时遇到了一些困难 我正在通过它启动一些第三方代码 以提取日志输出 直到最近更新第三方代码为止 一切都工作正常 更新后 python 开始无限期地阻塞 并且实际上不显示任何输出 我可以手动启动第三方应用程序并查
  • 协方差如何比多态性更酷......并且不冗余?

    NET 4 引入了协方差 我想它是有用的 毕竟 MS 历尽千辛万苦才把它添加到 C 语言中 但是 为什么协方差比传统的多态性更有用呢 我写这个例子是为了理解为什么我应该实现协方差 但我仍然不明白 请赐教 using System using
  • gitcherry-pick多次提交[重复]

    这个问题在这里已经有答案了 可能的重复 如何挑选一系列提交并合并到另一个分支 我想从一个分支中挑选 19 个提交并将它们应用到另一个分支 所有提交都是连续的 提交 1 提交 2 提交 19 并且最后一次提交不是最近的提交 即 在其之后还有其
  • 如何使用 标签提交 POST 表单?

    我如何提交 POST 表单至showMessage jsp仅使用 a href tag a
  • 使用 onbeforeunload 时抑制确认对话框

    我正在使用 onbeforeunload 事件发送 ajax 请求来执行一些清理任务 当我使用 onbeforeunload 时 它会显示关闭选项卡时的确认对话框 我想要的不是显示任何确认对话框 而只是发送清理请求 以下是我正在使用的脚本
  • 参数变量存储在内存中的什么位置?

    我正在用 C 编写一些代码 当遇到一个方法时 我想知道参数变量存储在内存中的位置 我知道以下几点 全局变量 gt 存储在 static 的代码部分 静态变量 gt 局部自动变量 方法内部 gt 存储在堆栈中 局部静态变量 gt 存储在堆栈中
  • iOS 17 更新后 PWA 应用在 Safari 上崩溃

    我的 Angular 应用程序在 iPhone 上作为 PWA 正常工作 但在上次 ios17 更新后 该应用程序崩溃了 即使我在 Safari 上清除现金 它也可能会再次工作几分钟 然后当我关闭时 该网站的 PWA 快捷方式将停止工作苹果
  • CoreBluetooth反复断开连接

    我已经上下查找过这个问题 但似乎没有人遇到这个问题 我有两台 iPad 其中一个充当始终位于前台的蓝牙外设 由于我对中央侧更感兴趣 因此我将中央 iPad 背景设置为支持 BLE central 我的工作流程如下 中央应用程序运行并开始扫描
  • 具有 Parquet 和分区的 Spark DataFrames

    我无法找到有关此主题的太多信息 但假设我们使用数据帧读取 10 个块的 parquet 文件 spark 自然会创建 10 个分区 但是 当数据帧读入文件来处理它时 它不会处理很大的数据与分区比率 因为如果它处理未压缩的文件 块大小会更大
  • 使用 NWConnection 进行长时间运行的 TCP 套接字的正确方法

    我整天都在与 NWConnection 作斗争 以在长时间运行的 TCP 套接字上接收数据 由于缺乏文档 我在给自己造成以下错误后终于让它工作了 数据不完整 由于只调用一次receive 获取 TCP 数据无序 由于从计时器 轮询 接收 导
  • 自定义对话框片段

    我正在尝试创建一个类似于DatePickerDialog The Dialog我正在创建的应该为用户提供一系列图像供他们选择 我相信我已经成功创建了数组并向其中添加了正确的图像 我现在遇到的问题是如何获取Dialog现身 我应该返回什么 我