[英]Tabs using Fragments on Android, but inside another Layout
我正在創建具有主要活動的表格布局的android應用,該部分可以完美運行...現在,想法是在現有組件下方添加應用的另一部分,但現在我必須在其中放置選項卡式布局。 好吧,當我嘗試運行該部分時,該部分也可以完美運行。 但是,我必須怎么做才能將這兩種方式混合在一起,以使這兩種方式在同一屏幕上一個接一個地顯示。
我的主要代碼是:
package my.android;
import android.os.Bundle;
public class MyActivity extends FragmentActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
我為所有選項卡使用了不同的布局文件,並按照以下教程在此處創建了TabsActivity類: http ://thepseudocoder.wordpress.com/2011/10/04/android-tabs-the-fragment-way/
那么如何將一些TabsActivity ta對象添加到MyActivity? 重要的是要低於此內容。 提前解凍...
理想情況下,這將使用嵌套的Fragments完成,但Android尚不支持。 剩下不推薦使用的ActivityGroup類。 您將需要一個擴展ActivityGroup並啟動這兩個活動的頂級活動。
這是您啟動活動並獲得其觀點的方式:
final Window w = getLocalActivityManager().startActivity(myTag, myIntent);
final View wd = w != null ? w.getDecorView() : null;
if ( null != wd ) {
wd.setVisibility(View.VISIBLE);
wd.setFocusableInTouchMode(true);
}
// TODO: Attach wd to a ViewGroup.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~編輯:下面是一個更完整的解決方案。
這是頂級活動的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
</LinearLayout>
這是頂級課程:
public class EmbeddedActivityParent extends ActivityGroup {
private LinearLayout mRootLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mRootLayout = (LinearLayout) findViewById(R.id.root_layout);
// Add embedded status activity.
embedActivity("StatusColumn", new Intent(this, StatusActivity.class));
// Add embedded work activity.
embedActivity("WorkArea", new Intent(this, MainActivity.class));
}
private void embedActivity(String myTag, Intent launchIntent) {
final Window w = getLocalActivityManager().startActivity(myTag, launchIntent);
final View wd = w != null ? w.getDecorView() : null;
if ( null != wd ) {
wd.setVisibility(View.VISIBLE);
wd.setFocusableInTouchMode(true);
mRootLayout.addView(wd);
}
}
}
您可以根據需要添加任意數量的嵌入式活動。 您甚至可以嵌套嵌入式活動,但是請注意性能可能成為一個因素。 我們使用它來支持動態狀態列。
就個人而言,我認為ActivityGroup仍然有用,並希望Gooogle改變他們的想法,不贊成使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.