2017-02-10 2 views
1

У меня есть DialogFragment прилагается к деятельности, и когда экран вращается, активность разрушается, так что делает DialogFragment, я хочу, чтобы сохранить DialogFragment и мои DialogFragment коды, как показано ниже, я добавляю setRetainInstance(true); Это разобьетsetRetainInstance в DialogFragment аварии

@Override 
public void onCreate(Bundle savedInstanceState) { 
    Log.d(sClassTag, "onCreate"); 
    super.onCreate(savedInstanceState); 
    setRetainInstance(true); 
    int style = DialogFragment.STYLE_NORMAL, theme = 0; 
    setStyle(style, theme); 

} 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    Log.d(sClassTag, "onCreateView"); 
    if(mView==null){ 
     mView = inflater.inflate(R.layout.layout_password,container,false); 
    } 
    addButtonListener(); 
    addEdittextListener(); 
    return mView; 
} 

Я получаю журнал сбоев здесь

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.microsoft.pdfviewertestapplication/com.microsoft.pdfviewertestapplication.MainActivity}: java.lang.IllegalStateException: DialogFragment can not be attached to a container view 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4077) 
at android.app.ActivityThread.-wrap15(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1350) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5422) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
+0

Вы можете разместить код который вы вызываете «Диалоговое изображение» из своей деятельности? –

+0

Похоже, вы упали на несколько ловушек Фрагмента. У меня была та же проблема, что и я и я смогли исправить, прочитав эту замечательную статью: http://code.hootsuite.com/orientation-changes-on-android/. –

ответ

1

Является ли ваша деятельность распространяется Fragment активность & у вас установлен configCha nges в файле манифеста для активности?

Take parent activity as FragmentActivity & inflate fragment as 

    DialogFragment newFragment = new Diafragment(); 
    newFragment.show(getSupportFragmentManager(), "dialog"); 
+0

Моя активность расширяет AppCompatActivity, на самом деле я создаю средний фрагмент в активности, а в среднем фрагменте я создаю объект dialogFragment, поэтому мне нужно изменить манифест для среднего фрагмента или активности? – newszer

+0

изменить родительскую активность фрагмента в манифесте –

+0

Можете ли вы дать пример того, как изменить манифест, и я использую newInstace для создания объекта DialogFragment и вызова функции show, но когда он вращается, он не войдет в среднюю часть фрагмента. Поэтому я хочу, чтобы сохранить dialogFragment экземпляра – newszer

0

я найти другой способ добавить элемент статического значения и записать значение, которое вы хотите сохранить в newinstance к члену статического значения, а затем в OnCreate функции делают правопреемник

+0

Это не очень хороший способ, если у кого-то есть лучшее решение, пожалуйста, поделитесь им, спасибо! – newszer

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