2014-09-04 66 views
0

嗯,我想在Android中旋轉屏幕時保存dialogFragment中包含的變量的值。我嘗試了所有可以在互聯網上找到的方法,而且他們中的任何一個都不適合我。有些人殺了我的應用程序,而其他人根本沒有做任何事情。當屏幕旋轉時,在DialogFragment中保存一個變量的值

我需要一個真實有效的方式來保存設備屏幕旋轉時重置的EditText的值。 EditText在DialogFragment中將其變爲FragmentActivity。

非常感謝你

回答

0

我不知道如果我理解你的問題,但你可以捕捉旋轉如下:

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) 
     { 
      //save value 
     } 
     if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) 
     { 
      //save value 
     } 
    } 

如果你想你的活動不重新啓動,你應該加入到清單文件這樣的:

<activity 
      ..... 
      android:configChanges="keyboardHidden|orientation|screenSize" 
      ..... > 
</activity> 
+0

無,指的是像 '< - 語言:爪哇 - >'' @ Override' \t'公共無效的onSaveInstanceState(捆綁outState){' \t'super.onSaveInstanceState(outState );' \t'outState.putString( 「PRECIO」,''txtPrecio.getText()的toString());' \t'}' 但這種方式並沒有爲我工作,和喜歡的方式。 – MrCoquish 2014-09-04 18:06:18

0

設置你的片段的retaingInstance標誌true

http://developer.android.com/reference/android/app/Fragment.html#setRetainInstance(boolean)

這樣可以防止重新創建Fragment實例。

還要確保你不重新創建片段的所有時間:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_activity); 

    if (savedInstanceState == null) { 
     Fragment f = new Myfragment(); 
     f.setRetainInstance(true); 
     getSupportFragmentManager().beginTransaction() 
      .add(R.id.container, f)) 
      .commit(); 
    } 

} 

由於視圖狀態休閒活動期間,將保留和你都保持相同的碎片情況下,你並不需要保存的TextView值每時每刻。

0

我剛剛發現不能將這些方法自動保存到對話框中,但是這些將應用於這些對話框的活動或片段。如果我可以通過代碼解決它,將把解決方案放在這裏。謝謝