簡體   English   中英

Android Fragment Inflate布局

[英]Android Fragment Inflate layout

嗨,我正在使用視圖尋呼機和片段。 我想覆蓋方向更改,以便每次方向更改時都不會運行onCreateView方法。 這是因為在我的應用程序的onCreateView中運行了很多,導致方向變化緩慢。 我的服務器上的東西也經過了檢查,但實際上沒有理由因為方向改變而沒有理由全部運行。

這是我到目前為止所建立的

我在清單中的MainActivity上有這個

 android:configChanges="orientation|keyboardHidden"

然后我在我的片段中使用它

@Override
public void onConfigurationChanged(Configuration newConfig) {
  super.onConfigurationChanged(newConfig);
    getLayoutInflater(getArguments()).inflate(R.layout.main, null, false);
    Toast.makeText(getActivity(), "changed orientation", Toast.LENGTH_LONG).show();
}

當我運行應用程序並切換方向時,我看到吐司節目,但布局永遠不會改變為景觀。 所以我決定也許android只是沒有意識到它是在風景中,因為我覆蓋了它,但是將布局改為荒謬的東西,如對話框的布局不會導致力量關閉或任何它保持拉伸的縱向布局結果所以我知道我如何膨脹布局有問題。

如果在viewpager中更改方向時更改布局的任何幫助將非常感激。

謝謝!

1)您應該將所有服務器檢查例程和其他一次性操作放在Fragment onCreate()中,而不是onCreateView()。 如果您需要在加載時顯示某種“正在加載...”屏幕,那么我建議使用FragmentActivity來擴展至少包含“正在加載...”類型圖形的FrameLayout的布局。 首先,FragmentActivity將運行onCreate(),其中它將首先膨脹初始View然后實例化Fragment。 將服務器檢查代碼放在Fragment的onCreate()中,然后在其onCreateView()方法中為此Fragment充氣。 這是我的一個項目的示例,它初始化了一個Microphone按鈕,它實際上是一個片段:

<FrameLayout
       android:id="@+id/recorder_mic_fragment"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       />

然后,麥克風片段實際上由以下Java代碼實例化:

// make the Mic button
FragmentManager fragMgr = getFragmentManager();
FragmentTransaction xact = fragMgr.beginTransaction();
if (null == fragMgr.findFragmentByTag(FRAG_TAG)) {
    xact.add(R.id.mic_button_frame, MicFragment.newInstance(queryType), FRAG_TAG).commit();
}

FRAG_TAG實際上是您為片段實例提供的唯一標記名稱,該片段實例與片段的R.id不同。 這樣,您可以使用findFragmentByTag()來確保片段在您需要的所有位置正確實例化。

如果您希望在片段中加載片段,就像我的應用程序實際工作方式一樣,您可以稍微按下此代碼。 如果你有一個片段會膨脹幾個可能的視圖之一,那么使用if語句選擇適當的幀ID並指定一個唯一的FRAG_TAG。 我建議為你為片段創建的每個FrameLayout使用不同的R.id。 (例如,如果此片段可能會為Info,Hum和Lyrics提供不同的視圖,那么我的每個麥克風片段的標簽名稱將是MetaMicButtonHumMicButtonLyricsMicButton 。我還需要在R.id.meta_mic_button_frame和等等。)

2)在縱向和橫向模式之間切換時,需要在文件夾res / layout和res / layout_land中定義不同的XML布局。 (或者,如果要將橫向模式視為默認模式,則可以進行res / layout和res / layout_port)。 請查看以下鏈接: http//developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources您可以根據屏幕大小,語言,停靠模式,夜間模式及其任意組合定義不同的布局。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM