在我的Android应用程序中,如果用户在PreferenceScreen中选择看起来像纯文本的内容,我想显示一个Dialog.我已经看过如何从首选项屏幕打开AlertDialog?,但该解决方案从CheckBoxPreference启动.
在我的情况下,我想从看起来像TextView(或者我认为它可能是一个按钮)的东西启动,然后它将导致我已经拥有的"关于"对话框.有什么建议怎么做?谢谢.
该方法showDialog(int)从类型Activity被弃用.

什么原因?以及如何解决?
我有一个DialogFragment创建一个listview对话框,在列表项上单击我想显示一个警告对话框,但是当我创建对话框时,它给了我一个NullPointerException我从未见过的错误
08-05 11:40:42.315: E/AndroidRuntime(4693): java.lang.NullPointerException
08-05 11:40:42.315: E/AndroidRuntime(4693): at android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:142)
08-05 11:40:42.315: E/AndroidRuntime(4693): at android.app.AlertDialog$Builder.<init>(AlertDialog.java:359)
08-05 11:40:42.315: E/AndroidRuntime(4693): at com.tyczj.bowling.dialogs.SeasonType$1$1.onClick(SeasonType.java:60)
08-05 11:40:42.315: E/AndroidRuntime(4693): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
08-05 11:40:42.315: E/AndroidRuntime(4693): at android.os.Handler.dispatchMessage(Handler.java:99)
08-05 11:40:42.315: E/AndroidRuntime(4693): at android.os.Looper.loop(Looper.java:137)
08-05 11:40:42.315: E/AndroidRuntime(4693): at android.app.ActivityThread.main(ActivityThread.java:4745)
08-05 11:40:42.315: E/AndroidRuntime(4693): at java.lang.reflect.Method.invokeNative(Native Method)
08-05 11:40:42.315: E/AndroidRuntime(4693): at java.lang.reflect.Method.invoke(Method.java:511)
08-05 11:40:42.315: E/AndroidRuntime(4693): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
08-05 11:40:42.315: E/AndroidRuntime(4693): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-05 11:40:42.315: E/AndroidRuntime(4693): at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
这是我的对话框 onCreate
@Override
public Dialog onCreateDialog(Bundle state){
final Dialog d = …Run Code Online (Sandbox Code Playgroud) 我正在打开Dialog一个Activity.对话框打开后,我打电话
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
Run Code Online (Sandbox Code Playgroud)
问题是,当我通过点击取消按钮或单击对话框外部关闭对话框时,键盘切换到文本键盘并且不会消失工具我单击硬件返回按钮.如何在关闭对话框时关闭键盘,并将焦点返回到上一个窗口?
我一直在尝试在默认的AlertDialog中添加两个元素,但我似乎无法使它工作.这是我的代码:
// START Dialog
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
TextView tv = new TextView(this);
tv.setText(title);
tv.setPadding(40, 40, 40, 40);
tv.setGravity(Gravity.CENTER);
tv.setTextSize(20);
EditText et = new EditText(this);
etStr = et.getText().toString();
alertDialogBuilder.setView(et);
alertDialogBuilder.setTitle(title);
alertDialogBuilder.setMessage("Input Student ID");
alertDialogBuilder.setCustomTitle(tv);
if (isError)
alertDialogBuilder.setIcon(R.drawable.icon_warning);
// alertDialogBuilder.setMessage(message);
alertDialogBuilder.setCancelable(false);
// Setting Negative "Cancel" Button
alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
});
// Setting Positive "Yes" Button
alertDialogBuilder.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (isError)
finish();
else …Run Code Online (Sandbox Code Playgroud) android textview android-edittext android-alertdialog android-dialog
我试图在a上创建一个循环显示Dialog.我会认为,你将能够获得View在onCreate的Dialog,隐藏它,然后用它揭示ViewAnimationUtils.createCircularReveal.
View由于出现requestWindowFeature()错误,我遇到了问题,我似乎无法解决.
您如何将材料设计动画应用于对话框?
编辑
我已成功通过将代码应用于dismiss()方法来隐藏对话框.但是当我试图通过循环显示来显示时,视图保持不可见.
android-animation android-dialog android-dialogfragment material-design android-5.0-lollipop
如何以编程方式(不触摸AndroidManifext.xml)设置主题Activity ,使其看起来像一个对话框?
注意:我可以修改它AndroidManifext.xml,只要它不需要修改就可以在看起来像普通活动或对话框之间切换.
我根据这个stackoverflow答案尝试了以下内容:
public class DialogActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
setTheme(android.R.style.Theme_DeviceDefault_Dialog);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dialog);
Log.d(TAG,"Build.VERSION.SDK_INT: "+Build.VERSION.SDK_INT); // 23
}
}
Run Code Online (Sandbox Code Playgroud)
但它最终会在背景中消除掉一切.
我也看到了这个stackoverflow的答案,并试过:
public class DialogActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
setTheme(android.R.style.Theme_DeviceDefault_Dialog);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dialog);
getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
}
}
Run Code Online (Sandbox Code Playgroud)
但它最终使一切变黑.
做什么?谢谢.
我正在通过扩展Dialog并使用setContentView()创建自定义Dialog.问题是,当我尝试显示对话框时,它只显示背景阴影而不是我的自定义布局.我已经设法通过将它包装在RelativeLayout中来显示自定义布局,但我想知道是否有更好的解决方案或我做错了什么.使用constraintLayout版本1.0.2.谢谢!
这是我的自定义对话框:
class EventsFilterDialog(context: Context): Dialog(context) {
init {
setContentView(R.layout.dialog_events_filter)
setCancelable(true)
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的R.layout.dialog_events_filter的简化版本,它具有完全相同的结果:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/headerTv"
android:text="@string/events_filters"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold"
android:gravity="center"
android:background="@color/colorPrimaryLight"
android:padding="16dp"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<View
android:id="@+id/middleView"
android:layout_width="0dp"
android:layout_height="256dp"
app:layout_constraintTop_toBottomOf="@+id/headerTv"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<TextView
android:id="@+id/closeTv"
android:text="@string/close"
android:textColor="@color/white"
android:textAllCaps="true"
android:textStyle="bold"
android:gravity="center"
android:background="@color/colorPrimaryLight"
android:layout_width="0dp"
android:layout_height="48dp"
app:layout_constraintTop_toBottomOf="@+id/middleView"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/applyTv" />
<TextView
android:id="@+id/applyTv"
android:text="@string/apply_filter"
android:textColor="@color/white"
android:textAllCaps="true"
android:textStyle="bold"
android:gravity="center"
android:background="@color/colorAccent"
android:layout_width="0dp"
android:layout_height="48dp"
app:layout_constraintTop_toBottomOf="@+id/middleView"
app:layout_constraintLeft_toRightOf="@+id/closeTv"
app:layout_constraintRight_toRightOf="parent"/>
</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud) 我试图显示一个带有match_parent的DialogFragment高度和宽度,但它发生在顶部,DialogFragment显示在StatusBar下面.
DialogFragment在底部,右侧,左侧和顶部应用了一些默认值.但顶部填充应从statusBar开始计数,而不是从总屏幕大小开始计算.
如何将DialogFragment设置为match_parent,但是在顶部,底部,右侧,左侧具有正常/默认填充?
android android-dialog android-windowmanager android-dialogfragment android-window
我正在构建一个使用a的自定义对话框DialogFragment.我注意到非常奇怪的行为,各种ViewGroup用作对话框布局的根.我认为这是由于系统窗口之间的一些奇怪的交互以及它如何显示对话框.在这个特定的实例中,我使用a ConstraintLayout作为布局的根视图.
显示时,对话框将延伸到屏幕边缘,Layout Inspector显示测量宽度超过16,000,000.甚至更奇怪的是ConstraintLayout定义填充,仍然可以在屏幕上看到.
下面是对话框的类:
public class AgreementDialog extends DialogFragment {
// Bindings..
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.dialog_agreement, container);
ButterKnife.bind(this, view);
return view;
}
}
Run Code Online (Sandbox Code Playgroud)
这是布局,dialog_agreement:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#fff"
android:padding="@dimen/margin_large"
android:layout_margin="@dimen/margin_xlarge"
>
<CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<TextView
android:id="@+id/description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_standard"
android:text="this is some text. "
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@id/checkbox"
/>
<TextView
android:id="@+id/id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_large"
android:text="123456789"
app:layout_constraintBottom_toTopOf="@+id/negative" …Run Code Online (Sandbox Code Playgroud) android android-dialog android-dialogfragment android-constraintlayout