簡體   English   中英

在Android上使用片段的制表符,但在另一個布局中

[英]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.

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