2016-08-09 32 views
0

現在我正在製作一個應用程序,要求我有大約20個或更多不同的頁面/佈局,一次加載一個,但它們之間很少/沒有相互通信。他們會很靜態的。現在我的想法是有一個活動,一個片段可以在onCreateView中膨脹不同的佈局,每當用戶選擇另一個頁面時,片段就會重新加載。不過,我只是意識到,根本無法工作,因爲我不能將onCreateView的return語句放在if語句中,也沒有解決方法。處理20多種不同靜態佈局的最有效方法是什麼?

所以現在我不知道最有效的方法來做到這一點。沒有辦法擁有20多種佈局和20多種課程,每一頁都很理想。看起來非常多餘。

+1

請問你爲什麼有這麼多不同的佈局?用戶可以查看這些所有不同的屏幕嗎?這些佈局之間是否有相似之處? –

+0

@ Code-Apprentice 20並不是那麼多。如果你在任何非平凡的應用程序,你至少會有這麼多 –

+0

@GabeSechan我猜我所有的應用程序到目前爲止都是非常微不足道的;-(仍然,我認爲我的後續問題仍然有效 –

回答

0

您可以使用Fragment的包與其通信使用哪種佈局。 片段中的類,創建一個靜態方法來創建片段實例並設置它的捆綁,例如:

public static MyFragment newInstance(int layoutId) { 
     MyFragment f = new MyFragment(); 
     Bundle args = new Bundle(); 
     args.putInt("layoutId", layoutId); // e.g. layoutId = R.layout.layout_fragment_01 
     f.setArguments(args); 
     return f; 
    } 

,然後在片段的onCreateView,獲得從包佈局ID:

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    return inflater.inflate(getArguments().getInt("layoutId", 0), container, false); 
} 

那麼,在你的活動,你會做類似如下:

MyFragment fragment = MyFragment.newInstance(R.layout.fragment_layout_01); 
getFragmentManager().beginTransaction().add(android.R.id.content, fragment).commit(); 
相關問題