2013-05-29 3 views
4

Я разработал приложение, в котором я хочу, чтобы отобразить фрагмент как диалог,Как показать фрагмент как диалог?

Я использовал Вкладки и фрагмент в моем приложении, у меня есть только один вид деятельности, и я заменить фрагмент, как мне нужно,

Если мы мы объявляем «android: theme =» @ android: style/Theme.Dialog »в файле манифеста, чтобы отображать активность как диалог, то же самое, что я хочу сделать для фрагмента

+0

http://developer.android.com/guide/topics/ui/dialogs.html#CustomLayout Используйте DialogFragment. – kelunik

+0

http://developer.android.com/reference/android/app/DialogFragment.html – pskink

ответ

0

Это диалоговое окно загрузки, которые я использую:

import android.app.Dialog; 
import android.app.DialogFragment; 
import android.app.ProgressDialog; 
import android.os.Bundle; 

public class LoadingDialogFragment extends DialogFragment { 

    private final String message; 

    private LoadingDialogFragment(String message) { 
     this.message = message; 
    } 

    public static LoadingDialogFragment newInstance(String message) { 
     LoadingDialogFragment fragment = new LoadingDialogFragment(message); 
     return fragment; 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     final ProgressDialog dialog = new ProgressDialog(getActivity()); 
     dialog.setMessage(message); 
     dialog.setIndeterminate(true); 
     dialog.setCancelable(true); 
     return dialog; 
    } 

} 

Может быть реализован так:

LoadingDialogFragment.newInstance(context.getString(R.string.loading_message)) 

Вы можете надуть видом и setContentView изнутри этого диалога, если вы хотите создать собственный макет. http://developer.android.com/guide/topics/ui/dialogs.html#CustomLayout

+0

Я использовал DialogFragment, но он по-прежнему отображается как фронт, а не как диалог. Можете ли вы дать мне ссылку на образец демо – Jayesh

+0

, как вы показываете диалог? – pskink

+0

Вот как я показываю фрагмент из вышеперечисленного: LoadingDialogFragment.newInstance (context.getString (R.string.loading_message)). Show (getFragmentManager(), "searchDialog"); – span

1

Мы можем показать фрагмент как диалог, используя два способа, но одним способом.

Пояснение:

Путь:

Расширение класса DialogFragment и переопределить любой один из двух методов:

onCreateView() ИЛИ

onCreateDialog().

Diff. между этими двумя:

Перекрытие onCreateView() позволит вам показать фрагмент в диалоговом окне, и вы можете сделать текст Заголовок изменен.

С другой стороны, переопределяя onCreateDialog(), вы можете снова показать фрагмент как диалог, и здесь вы можете настроить весь фрагмент диалога. Значит, вы можете раздуть любое представление, чтобы показать его как диалог.

Если вам нужен какой-либо исходный код, объясняющий приведенный выше текст, сообщите мне.

Примечание:

Использование DialogFragment имеет недостаток. Он не обрабатывает ориентацию экрана. И сбой приложения.

Итак, вы должны использовать setRetainInstance() внутри класса WithCreate() класса DialogFragment.

+0

Я не согласен с вашей записью об изменениях ориентации. Я использовал DialogFragment несколько раз, и он отлично работает при изменении ориентации. Очевидно, он будет воссоздан, как и все фрагменты, когда вы меняете ориентацию. –

Смежные вопросы