我正在尝试使用一个接口将数据从a返回DialogFragment到ArrayAdapter它所显示的数据.
我在这里读过类似的东西,但我不知道如何调用DialogFragment返回数据的函数.
有人可以帮忙吗?
MyDialog.java
public class MyDialog extends DialogFragment {
static interface Listener {
void returnData(int result);
}
/* ... */
@Override
public void onActivityCreated (Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
mBtnSubmit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// How can I call PCListAdapter.returnData ?
dismiss();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
PCListAdapter.java
public class PCListAdapter extends ArrayAdapter<PC> implements MyDialog.Listener {
/* ... */
public void showCommentDialog() {
FragmentManager fm = ((Activity)mContext).getFragmentManager();
MyDialog …Run Code Online (Sandbox Code Playgroud) 我从片段A开始bottomSheetDialogFragment。我想从该bottomSheetDialogFragment中选择日期,然后将其设置在片段A中。
选择日期已经完成,我只想将其放在片段A中以在某些字段中进行设置。
我如何获得价值?有什么建议怎么做吗?
我需要在FragmentActivity的onStop()中解除DialogFragment,如果它正在显示,这就是我做的
if(mAlertDlg != null && mAlertDlg.getDialog() != null)
mAlertDlg.dismiss();
Run Code Online (Sandbox Code Playgroud)
但我通常得到IllegalStateException.那么请告诉我为什么代码错了,在onStop()中解除DialogFragment的正确方法是什么?谢谢.
有什么办法可以在上面显示片段吗DialogFragment?当我BottomSheetDialogFragment在某些操作后显示时,我需要显示另一个片段(不是对话框片段的类型)而不关闭该对话框,我尝试从对话框中删除暗淡效果并隐藏视图,但这不好,对话框片段是不可见,但是,它的顶部是钢制的,按背面键首先会删除这个不可见的对话框,我需要实现的是正常的后堆栈顺序,就像“正常”片段一样
是否可以通过使用a DialogFragment将其移出中心并将其放置在屏幕上的任何位置?
我正在尝试使用DialogFragment在Android中显示一个基本对话框,使用对话框消息的参数,如StackOverflow线程和DialogFragment文档中所述.我的问题是onCreateDialog中的Bundle参数savedInstanceState始终显示为null,这意味着该活动显示一个空对话框而不是带有消息的对话框.如何从newInstance工厂方法获取非null的bundle内容以显示在onCreateDialog中?或者我只是遗漏了别的东西?
我从文档中看到的唯一重要区别是我使用的是非静态类.我希望积极的对话框按钮取决于消息的内容,所以这是故意的.
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
public class SampleDialog extends DialogFragment {
public static final String DIALOG_MESSAGE = "dialogMessage";
private String dialogMessage;
// arguments are handled through factory method with bundles for lifecycle maintenance
public SampleDialog(){
}
public static SampleDialog newInstance(String dialogMessage){
SampleDialog fragment = new SampleDialog();
Bundle args = new Bundle();
args.putString(DIALOG_MESSAGE, dialogMessage);
fragment.setArguments(args);
return fragment;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
if(savedInstanceState != null) {
dialogMessage = …Run Code Online (Sandbox Code Playgroud) 我试图在android中设置一个10分钟的间隔DialogFragment(由谷歌建议),但我真的找不到办法做到这一点.
这是显示对话框的片段类:
public class TimePickerFragment extends DialogFragment
implements TimePickerDialog.OnTimeSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current time as the default values for the picker
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
// Create a new instance of TimePickerDialog and return it
return new TimePickerDialog(getActivity(), this, hour, minute,
DateFormat.is24HourFormat(getActivity()));
}
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
String realMinute= "";
switch (minute) {
case 1:
realMinute = …Run Code Online (Sandbox Code Playgroud) java android android-fragments android-dialogfragment dialogfragment
我有个问题.我的活动有风格
<style name="MaterialTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/action_bar_background</item>
<item name="colorPrimaryDark">@color/action_bar_background</item>
<item name="colorAccent">@color/action_bar_background</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我也有一个简单的单选择选择器的dialogFragment.
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
final AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity());
dialog.setTitle(R.string.image_resolution);
dialog.setSingleChoiceItems(R.array.quality_labels, getPosition(), this);
return dialog.create();
}
Run Code Online (Sandbox Code Playgroud)
如何更改选择器复选标记的颜色(绿色圆圈)???
我试图windowFixedHeightMinor与自定义结合使用DialogFragment来创建固定大小(实际上按比例大小)的对话框。
我正在我的主题中设置主题onCreate
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(STYLE_NORMAL, R.style.MyDialog);
}
Run Code Online (Sandbox Code Playgroud)
主题:
<style name="MyDialog" parent="Base.Theme.AppCompat.Light.Dialog.FixedSize">
<item name="android:windowBackground">@color/light_blue</item>
<item name="android:windowMinWidthMajor">80%p</item>
<item name="android:windowMinWidthMinor">80%p</item>
<item name="windowFixedHeightMinor">80%p</item>
<item name="windowFixedHeightMajor">80%p</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我可以看到它被应用到我的对话框(这就是设置背景的原因)并且 windowMinWidthMajor 被应用,因为对话框大约是屏幕尺寸的 80%。但是,对话框始终占据屏幕的整个高度。
对话框本身显示:
MyDialogFragment.newInstance().show(getFragmentManager(), "dialog");
Run Code Online (Sandbox Code Playgroud)
主要供参考,对话框本身如下所示,尽管我尝试从其中剥离几乎所有内容并获得类似的结果。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<Button
android:text="@string/accept"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/done"
android:layout_margin="16dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
/>
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_above="@id/done"
>
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<RadioButton
android:text="Pink"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/pink"
android:layout_weight="1" />
<RadioButton
android:text="Purple"
android:layout_width="wrap_content" …Run Code Online (Sandbox Code Playgroud) 我的应用程序中有一个DialogFragment( android.support.v4.app.DialogFragment)的子类,它可以正常工作很长时间。对话框本身是在onCreateDialog()回调中构造的。
但是,现在我想转换到新的对话框布局并决定构建一个完全自定义的对话框。据我所知,这需要删除回调中onCreateDialog()的View层次结构的覆盖和膨胀onCreateView()。我这样做了。
由此产生的行为很奇怪——当需要显示对话框时,屏幕变暗,但没有显示对话框的布局(“后退”按钮的行为也与对话框的功能一致):
我试图恢复到旧的实现(使用onCreateDialog()回调) - 它仍然有效。
我的问题是:我做错了什么?
对话框的代码:
/**
* A dialog that can show title and message and has two buttons. User's actions performed
* in this dialog will be posted to {@link EventBus} as {@link PromptDialogDismissedEvent}.
*/
public class PromptDialog extends BaseDialog {
/* package */ static final String ARG_TITLE = "ARG_TITLE";
/* package */ static final String ARG_MESSAGE = "ARG_MESSAGE";
/* package */ …Run Code Online (Sandbox Code Playgroud) android ×10
dialogfragment ×10
fragment ×3
java ×2
adapter ×1
bottom-sheet ×1
bundle ×1
interface ×1
picker ×1