[英]Is it possible to create multiple screens, with only one Activity in an Android application?
通常,我將使用不同的XML文件為每個要顯示的“屏幕”使用單獨的活動。
但是,我正在動態地將jar文件加載到android應用程序中,因此在運行時,我不知道會有多少活動,或者會有多少屏幕。
目前,使用Java反射,我能夠從動態加載的Java文件中返回一個字符串列表,並將每個列表項作為一個單獨的按鈕繪制到屏幕上。 如果單擊這些按鈕之一,我希望能夠在堆棧上加載其他“屏幕”。 因此,當我從這個新屏幕上按回去時,它將轉到上一個調用它的屏幕。
是否可以在不創建新活動並將新意圖傳遞給它的情況下進行此操作,並且當然可以對android清單文件進行相關更改?
以黑莓手機功能為例-安卓中是否有與黑莓手機的推送和彈出屏幕等效的功能? 屏幕在哪里推出/彈出,只會擴展MainScreen嗎?
如果有人有疑問,或者如果我一直含糊,請發表評論,我會盡力向自己解釋,非常感謝您的幫助。
相當於BB的推/彈出屏幕的Android是startActivity()
/ finish()
。 但是,您可以通過使用容器視圖(例如ViewSwitcher
,如@hasanghaforian所建議的那樣)或通過在每次要更改屏幕時使用新的視圖層次結構簡單地調用setContentView()
來管理單個活動中的視圖。 請注意,當您調用setContentView
,通過調用findViewById
獲得的任何視圖引用都將是陳舊的。
您可以使用ViewSwitcher
。 ViewSwitcher是一個ViewAnimator,可在兩個視圖之間切換 ,並具有一個工廠,可從中創建這些視圖。 您可以使用工廠創建視圖,也可以自己添加視圖。 一個ViewSwitcher只能有兩個子視圖,其中只有一個是你可以使用時間。或者顯示fragments
。
如果您提到在同一活動中是否可以使用不同的布局,答案是肯定的。
活動獨立於布局,您不為清單中的活動分配布局,而是定義要在活動中使用的布局,請從Activity類調用setContentView()方法來設置布局。
因此,如果要具有某些布局(屏幕),只需要做的就是定義各種布局,並在要調用setContentView(R.layout.the layout)時使用它們,在此調用之后,將顯示所選的布局。
如果無法通過xml靜態創建布局,則可以根據需要根據需要通過代碼動態創建布局。
此外,您可以擁有一堆布局,每次需要一個新屏幕時,都要進行構建,將其推入堆棧並調用setContentView()方法,而在不需要更多屏幕時,彈出堆棧並調用setContentView( ),並在堆棧頂部顯示新布局。
希望對你有幫助
我認為您應該使用Fragment。 我假設您有一些代碼在字符串上進行迭代:
for(String def : definitions) {
Fragment f = new CustomFragment();
Bundle b = new Bundle();
b.putString("STRING_DEF",def);
f.setArguments(b);
fragments.add(f);
}
在上面的代碼中,只是創建了Framents
的集合。 讓我們看一下CustomFragment
實現:
CustomFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String def = getArguments.getString("STRING_DEF");
//write code to create view
return view;
}
}
現在,在ListActivity
您必須像這樣像這樣或多或少地在點擊監聽器上實現
public void onListItemClick(ListView l, View v, int position, long id) {
FragmentManager fragMgr = getFragmentManager();
FragmentTransaction t = fragMgr.beginTransaction();
t.replace(R.id.id_of_view_place_holder_for_fragment,
fragments.get(position),"FRAGMENT_TAG");
t.commit();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.