2017-01-15 32 views
1

我已经使这个简单的对话框片段显示在主屏幕上,除了当我关闭片段对话框时,它可以正常工作,第二个小框出现在单词Dialogue中它。我不能为我的生活找出它来自哪里。Android - 关闭对话框片段后出现小对话框

任何人有任何建议吗?它可能与被调用的类链有关,其中一个是再次启动警报,但没有自定义布局视图?

enter image description here

的对话片段。

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; 
    } 
} 

} 

Dialog Receiver class。

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

实例化片段的类。

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


} 

}

的manifest.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> 

回答

1

这是AlarmDialogClassActivity。即使你不打电话setContentView(),它的窗口仍然被创建,并且Theme.Dialog,这就是它的样子。

只要DialogFragment被解雇就完成Activity会照顾它,虽然这有点难以处理,并且在它出现之前您仍然可以看到Activity。您可以使用NoDisplay主题作为Activity,但在DialogFragment被解雇后仍然必须处理完成Activity

Activity本身用作对话框并放弃DialogFragment可能更容易。