2

我已經開始編碼,我真的很喜歡它,我在不同的項目上開/關(學習不同的東西)但現在我遇到了問題,我「應用程序」說出我可以得到的所有幫助。如何設置一個臨時片段到我的「主屏幕」Android工作室

我正在使用導航抽屜並安裝了三個片段。我可以瀏覽導航抽屜並選擇一個片段並將其加載到我的屏幕上。但是,當我開始我的應用程序時,屏幕只是白色,導航抽屜位於左側,我可以選擇一個片段。是否有可能在我的「主屏幕」上有一個片段,所以當我啓動應用程序時,屏幕上已經有一個片段,但是!當我在導航抽屜中選擇另一個片段時,我想讓我的片段在開始加載時消失。否則兩個片段將顯示在彼此(文本上的文本)。也許有臨時片段以某種方式「完成」自己。請看我的imgur圖像來獲得我的想法。 Imgur image press here to view

+0

你可以在Activity的''onCreate()'方法中放入任何'Fragment'。看看'FragmentManager'。 –

回答

2

這是關於如何使用FragmentManager的通用解決方案。它應該給出一個關於如何顯示Fragment的好主意。除此之外,你可以在你的佈局中包含一個靜態片段。這取決於你如何接近它。
所以FragmentManager的解決方案是這樣的:

YourActivity.java

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     FragmentManager fragmentManager = getFragmentManager(); 
     Fragment fragment = AnyFragment.instantiate(this, AnyFragment.class.getName()); 
     fragmentManager.beginTransaction().add(R.id.fragment_placeholder, fragment).addToBackStack(null).commit(); 
    } 

如果要替換當前片段目標ID是在您的活動定義layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <FrameLayout 
     android:id="@+id/fragment_placeholder" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"></FrameLayout> 
</LinearLayout> 

後來你可以使用removeadd我FragmentManager的方法(replace方法有點兒bug)。

Fragment currentFragment = fragmentManager.findFragmentById(R.id.fragment_placeholder)) 
fragmentManager.beginTransaction().remove(currentFragment).add(R.id.fragment_placeholder, yourNewFragment).addToBackStack(null).commit(); 
+0

Ty Murat當我回家時,我會嘗試代碼!當我下班回家時,通常坐2-4小時嘿:)。 – Tim

+1

嗨,它工作!我只用這個代碼,它工作得非常好! <@Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); FragmentManager fragmentManager = getFragmentManager(); Fragment fragment = AnyFragment.instantiate(this,AnyFragment.class.getName()); fragmentManager.beginTransaction()。add(R.id.fragment_placeholder,fragment).addToBackStack(null).commit(); } – Tim

相關問題