Articles of android dialogfragment

DialogFragment上的commitAllowingStateLoss

我在显示DialogFragment IllegalStateException : java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 我知道它为什么会发生但我想通过重写DialogFragment show函数来显示对话框的commitAllowingStateLoss: public void show(FragmentManager manager, String tag) { mDismissed = false; mShownByMe = true; FragmentTransaction ft = manager.beginTransaction(); ft.add(this, tag); ft.commit(); //replace it by commitAllowingStateLoss } 但是我没有访问mDismissed和mShownByMevariables,我如何访问这些variables来修改它们,就像它的父级一样。

对话框片段顶部的布局边距/填充

当使用片段时,我的布局会受到顶部额外空间的干扰,我不知道它来自何处。 它看起来像这样: 这个空地的可能来源是什么? 我还没有find主题或一些风格设置,或者这个空间是否留给了动作栏? 我真的想摆脱这个。 以下是相应的布局xml和实例化对话框的代码: XML: Java的: FragmentManager fm = this.getSupportFragmentManager(); mSearchingDialog = new SearchingDialogFragment(); Bundle bundle = new Bundle(); bundle.putString(“name”, mCityToAdd.userName()); mSearchingDialog.setArguments(bundle); mSearchingDialog.show(fm, TAG); 我也在这里问过这个问题,认为这是一个与滚动视图相关的问题,但空间出现在我的所有片段中: ScrollView在顶部添加了额外的空间

在DialogFragment中显示ConstraintLayout

我希望你能解决我的问题。 我试图谷歌它,并在这里查看主题,但无法find答案。 我最近将我的布局更改为ConstraintLayouts ,到目前为止,这一切都很顺利。 然而我的问题是我有一些显示LinearLayout DialogFragments ,当我将其更改为ConstraintLayout我只显示一个褪色的叠加层,但不显示布局中的元素。 如果我将宽度和高度硬编码为100dp ,它将显示该区域。 当我尝试match_parent或任何其他组合时,同样的问题适用。 我也尝试将高度和宽度设置为设备的高度和宽度,但仍然没有运气。 在我的CreateWeddingMetadataFragment中的onCreateView中,我有: createButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d(TAG, “Show message dialog”); FragmentManager fm = getFragmentManager(); CreateWeddingMetadataDialogFragment welcomeMessageDialog = new CreateWeddingMetadataDialogFragment(); welcomeMessageDialog.show(fm, “metadate_fragment_dialog”); welcomeMessageDialog.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { } }); 在我的CreateWeddingMetadataFragmentDialog中,我有: public class CreateWeddingMetadataDialogFragment extends DialogFragment{ private static […]

键盘显示时,DialogFragment不会resize

我正在尝试使用SherlockDialogFragment来询问用户的一些输入。 我的手机上的一切正常(Galaxy Nexus,4.2),但是在较小的手机(模拟器2.3.3)上,当键盘出现时,它覆盖了DialogFragment的两个按钮,如下所示: 我的布局在ScrollView中,我在我的onViewCreated SOFT_INPUT_ADJUST_RESIZE更改为onViewCreated 。 我也尝试过SOFT_INPUT_ADJUST_PAN ,但它没有用 MyCustomDialog.java public class AddTaskDialog extends SherlockDialogFragment implements OnDateSetListener{ //… @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); } public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the Builder class for convenient dialog construction AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); this.inflater = getActivity().getLayoutInflater(); View mainView =inflater.inflate(R.layout.custom_dialog, null); […]

使用CollapsingToolbarLayout的CoordinatorLayout在Dialog片段中使用Keyboard打破

我最近决定将我的应用程序移动到使用新的支持设计库,最近发现了一个非常讨厌的错误。 假设我有一个主持AppBarLayout和任何可滚动视图的CoordinatorLayout,无论是ViewPager,NestedScrollView,还是具有所需滚动行为的RecyclerView; 选择显示一个显示键盘的对话框片段会导致AppBarLayout与滚动视图断开连接,并且它们不再滚动在一起。 此外,滚动视图被强制调整到底部屏幕的一半,而AppBar布局占据了上半部分,尽管它不需要它。 这个bug的video在这里: Youtube Link 编辑: 将Activity中键盘的softInputMode设置为“adjustPan”可以解决问题。 显然,CoordinatorLayout不喜欢通过键盘动态resize。 违规的XML看起来像这样,但我有多个XML变体表现出这种行为,其中的共同元素都是他们使用的是CollapsingToolbarLayout:

方向更改时的DialogFragment回调

我正在迁移我的对话框,目前正在使用Activity.showDialog(DIALOG_ID); ,使用android参考中讨论的DialogFragment系统。 在使用回调将某些事件传递回打开对话框的活动/片段时,我的开发过程中出现了一个问题: 这是一个简单对话框的示例代码: public class DialogTest extends DialogFragment { public interface DialogTestListener { public void onDialogPositiveClick(DialogFragment dialog); } // Use this instance of the interface to deliver action events static DialogTestListener mListener; public static DialogTest newInstance(Activity activity, int titleId, int messageId) { udateListener(activity); DialogTest frag = new DialogTest(); Bundle args = new Bundle(); args.putInt(“titleId”, […]

如何将DialogFragment正/负按钮保持在软键盘上方

我正在使用DialogFragment。 当用户与Gmail平板电脑应用程序中的屏幕下的示例图片中的编辑文本进行交互时,我希望正面和负面按钮保持在键盘上方。 在我的尝试不起作用,这是我的Dialog Fragments onCreateDialog方法 @Override public Dialog onCreateDialog(Bundle savedInstanceState) { LayoutInflater factory = LayoutInflater.from(getActivity()); final View textEntryView = factory.inflate(R.layout.my_layout, null); return new AlertDialog.Builder(getActivity()) .setTitle(getString(R.string.paypal)) .setView(textEntryView) .setPositiveButton(R.string.dialog_ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { } } ) .setNegativeButton(R.string.dialog_cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { } } ) .create(); […]

PreferenceActivity中的DialogFragment

我已经定义了dialogfragments (因为Android文档说它更好,实际上它是)但现在我想在PreferenceActivity使用它。 问题是我不能在那里使用getSupportFragmentManager()而我不能使用PreferenceFragment,因为它不兼容兼容库。 看起来像一个路障场景。 任何人都可以就此提出建议吗?

共享元素转换无效

我只用这个问题做了一个github项目。 你可以从这里看到它/克隆它/构建它: https : //git.io/vMPqb 我试图让共享元素为Fragment转换工作。 项目中有两个FAB – 羽毛和平面。 羽毛和飞机是共享元素。 单击“羽化”时,将打开“SheetDialog”,并且“羽化”应为“平面”对话框设置animation。 目前它没有这样做,我试图确定原因。 值得注意的是,我在API 24上运行此function,因此在版本21以下不支持转换的问题不是问题。 任何人都可以告诉我为什么共享元素转换不起作用? 为了回应repo中的内容,有四个重要文件: 主要活动 package test.example.fabpop; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.transition.ChangeBounds; import android.support.transition.Fade; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.view.View; public class MainActivity extends AppCompatActivity { FloatingActionButton fab_feather; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fab_feather = (FloatingActionButton) findViewById(R.id.initial_fab_feather); } public […]

我应该使用PopupWindow或DialogFragment接受输入吗?

我正在使用3个Spinners和一个EditText做一个Popup 。 在阅读了很多博客和文章后,我无法确定哪个是最佳选择, PopupWindow或DialogFragment 。 标准是: 与不同Android版本的兼容性 性能 如果有更好的方法,我愿意改变观点。 非常感谢你。 DialogFragment: 优点: 缺点: popup窗口: 优点: 缺点: 编辑:结论 DialogFragment允许您使用更复杂的function。 另一个重要的事情是它更加平板电脑,因为它允许用户一次打开多个片段。 片段是一种更动态的解决方案,它们是较新Android版本的标准。 PopupWindow更简单,对用户的简单问题非常有帮助。