我正在创建具有主要活动的表格布局的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?重要的是要低于这个内容。提前做出来......
答案 0 :(得分:0)
理想情况下,这可以使用嵌套片段完成,但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改变主意弃用它。