Android - 关闭对话框 fragment 后出现小对话框

标签 android android-dialogfragment

我制作了这个简单的对话框 fragment 以显示在主屏幕上,它工作正常,但当我关闭 fragment 对话框时,会出现第二个小框,其中包含 Dialogue 一词。我一辈子都想不出它是从哪里来的。

有人有什么建议吗?是否与被调用的类链有关,并且其中一个类再次启动警报但没有自定义布局 View ?

enter image description here

对话框 fragment 。

public class DialogFragmentTest extends DialogFragment implements View.OnClickListener{

private AlertDialog.Builder mBuilder;
private AlertDialog mAlertDialog;
private View mDialogView;
private Button mOkBtn, mCancelBtn;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    mDialogView = inflater.inflate(R.layout.dialog_layout, container, false);

    Log.d("DialogFrag", "onCreate");

   // mBuilder = new AlertDialog.Builder(getContext());

    mOkBtn = (Button) mDialogView.findViewById(R.id.ok);
    mCancelBtn = (Button) mDialogView.findViewById(R.id.cancel);

    mOkBtn.setOnClickListener(this);
    mCancelBtn.setOnClickListener(this);

    return mDialogView;
}


@Override
public void onClick(View view) {
    switch (view.getId()) {
        case R.id.ok:

            this.dismiss();

            break;
        case R.id.cancel:
            this.dismiss();
            break;
    }
}

}

对话框接收器类。

public class AlertDialogReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    Intent alarmIntent = new Intent("android.intent.action.MAIN");
    alarmIntent.setClass(context, AlarmDialogClass.class);
    alarmIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(alarmIntent);
}
}

实例化 fragment 的类。

public class AlarmDialogClass extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Log.d("AlarmClass", "onCreate:");

    FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    DialogFragmentTest dft = new DialogFragmentTest();
    dft.show(fm, "Sample Fragment");


}

list .xml

<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.android.shnellers.dialogue"
      xmlns:android="http://schemas.android.com/apk/res/android">

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>

            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
    <activity
        android:name=".AlarmDialogClass"
        android:theme="@android:style/Theme.Dialog"
        android:launchMode="singleInstance" />

    <receiver android:process=":remote" android:name=".AlertDialogReceiver"/>
</application>

最佳答案

这是AlarmDialogClass Activity .即使你不调用 setContentView() , 它的窗口仍然被创建,并且带有 Theme.Dialog ,这就是它的样子。

完成 Activity一旦DialogFragment is dismissed 会处理它,尽管这有点笨拙,你可能仍然会看到 Activity在它消失之前的一瞬间。您可以改用 NoDisplay Activity 的主题,但您仍然需要完成 ActivityDialogFragment之后被解雇了。

使用 Activity 可能更容易本身作为你的对话框,并删除 DialogFragment .

关于Android - 关闭对话框 fragment 后出现小对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41667648/

相关文章:

android - fragment 必须是公共(public)静态类才能从实例状态正确地重新创建

安卓 : How to dismiss a DialogFragment on orientation change?

android - windowSoftInputMode 在 Android M 中没有效果

android - 结合两个不同的可观察量

java - 有什么方法可以在不使用 ProGuard 优化的情况下删除日志记录调用?

android - fab.show() 在初始化新 Activity 后第一次没有动画

android - 保持 DialogFragment 打开,直到用户输入有效 Android?

android - 从外部 dex 加载 Activity

java - 如何获取android中特定区域的坐标?

android - DailogFragment - getArguments/setArguments - 为什么要在包中传递参数?