2013-12-18 60 views
1

在我的應用程序中,我有一個自定義對話框,用戶可以通過單擊「關於」菜單項調用該對話框。對話框在旋轉中消失

public class AboutDialog extends Dialog { 
    ... 
? 

... 
AboutDialog dlg = new AboutDialog(ctx); 
dlg.show(); 

我的應用程序有兩個活動。關於菜單項在兩個活動中都可用。

在第一個活動中,如果在顯示對話框時旋轉設備,它將繼續保持顯示狀態。但是,在第二個活動中,對話輪流消失。

我沒有任何邏輯來使對話框旋轉。該框架使這自動發生。

我想知道是否有人有任何想法,爲什麼對話可能會消失在第二個活動。

+0

Dialogfragment現在使這更容易,並且是創建對話框的推薦方式。 – Kuffs

回答

1

對話框將被關閉,因爲活動在屏幕方向更改時重新創建。在清單中的活動中添加android:configChanges="orientation"可能能夠解決問題,但不推薦。最好的解決方案是使用fragmentDialog。下面是一個示例調用一個片段對話框:

private void showFragmentDialog() { 
     FragmentManager fm = getChildFragmentManager(); //THIS IS USED WHEN YOU ARE NOT INSIDE AN ACTIVITY FRAGMENT else use getFragmentManager 
     DialogFragmentName dialog_fragment = new DialogFragmentName(); 
     dialog_fragment.show(fm, "dialog_fragment"); 
    } 

,這將是你的FragmentDialog類:

public class DialogFragmentName extends DialogFragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.YOUR_DIALOG_LAYOUT, container); 
     //SETUP YOUR VIEWS HERE E.G.: 
     //Button btn = (Button) view.findViewById(R.id.VIEW_ID); 

     return view; 
    } 
} 

,改變你的延伸到FragmentActivity,而不是隻是一個普通的活動,使這項工作。