2016-04-27 53 views
0

我有一个application其中有四个activities。所有这些活动应由顶部的toolbar和底部的TabLayout组成。 TabLayout有4个选项卡。点击一个特定的tab需要四个活动之一。扩展所有活动从一个不起作用的公共活动

现在我想实现的代码如下

1)创建一个父活动。该活动会扩展包含TabLayout的布局。

2)所有其他四项活动应扩展家长活动。这些活动有他们自己的xml布局。

ParentActivity.java

public class ParentActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_parent); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    } 
} 

activity_parent.xml

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:background="?attr/colorPrimary" 
     android:elevation="6dp" 
     android:minHeight="?attr/actionBarSize" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tab_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true"> 

     <android.support.design.widget.TabItem 
      android:text="One" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content"/> 

     <android.support.design.widget.TabItem 
      android:text="Two" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content"/> 

     <android.support.design.widget.TabItem 
      android:text="Three" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content"/> 

     <android.support.design.widget.TabItem 
      android:text="Four" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content"/> 

    </android.support.design.widget.TabLayout> 

</RelativeLayout> 

当我启动OneActivity我不能够得到的工具栏和我在ParentActivity创建的tablayout。我只收到我在OneActivity的xml文件中声明的内容。

我的预期UI是这个

enter image description here

这是我下水后得到的。

enter image description here

+2

看来你想在你的标签4片段。不是4子类的活动 –

+1

不。我想要四个活动。我在这里说明的例子非常简单。但在真正的应用程序中,我有四个活动,而这些活动又有碎片。 – thedarkpassenger

+1

如果您在扩展活动中调用'setContentView()',它将完全替代您在'ParentActivity'中设置和初始化的布局。 –

回答

1

如果你调用在扩展活动setContentView(),它完全替代设置和ParentActivity初始化布局。

相反,包括内容ViewGroup - 例如,与FrameLayout ID content - 在ParentActivity的布局,和膨胀的扩展活动“布局进去。

@Override 
public void setContentView(int layoutResID) { 
    super.setContentView(R.layout.activity_parent); 

    getLayoutInflater().inflate(layoutResID, 
     (ViewGroup) findViewById(R.id.content)); 
} 

您还可以将设置和初始化通用于所有的扩展活动的成覆盖:这可以简单地而是在ParentActivity做如下通过覆盖setContentView(int)方法。