包括1项活动中2项活动的内容

时间:2014-01-03 09:13:49

标签: android android-activity

我有2个活动(让我们调用他们的布局activity_one和activity_two)。两者都有单独的XML模板和单独的活动。

在其中一个onCreate(Bundle savedInstanceState)中,我呼叫setContentView(R.layout.activity_one);

此布局中的一个子视图是LinearLayout。我想在此LinearLayout中放入R.layout.activity_two的内容,如果可能的话,使用其活动类中的代码(onClickListeners等)。

我想要这样做的原因是我正在构建的应用的平板电脑版本应该显示来自两个视图的数据。

这可能吗?我该怎么做?

谢谢:)

3 个答案:

答案 0 :(得分:1)

您应该使用片段,使用片段,您将能够拥有两个单独的布局文件,两个独立的片段 - 这与您当前的活动非常相似(很容易将活动转换为片段),还有您将需要额外的活动,其中包括这两个片段。

您仍然可以让当前活动显示其布局,只需为每个此类活动创建FragmentActivity,并显示适当的片段。

其他解决方案可能是使用布局包含标记,允许将一个布局包含在另一个布局中。

顺便说一句。片段被引入,以便更容易构建平板电脑版本(大屏幕)的应用程序,同时仍然能够显示手机的UI版本(较小的屏幕)。

答案 1 :(得分:1)

// try this way here i just gave simple demo

**activity_one.xml**
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:gravity="center"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/btnActivityOne"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Activity One"/>

    <include
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        layout="@layout/activity_two"/>

</LinearLayout>

**activity_two.xml**
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <Button
        android:id="@+id/btnActivityTwo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Activity Two"/>
</LinearLayout>

**MyActivity.java**
public class MyActivity extends Activity {
    private Button btnActivityOne;
    private  Button btnActivityTwo;
    @Override
    protected void onCreate(Bundle savedInstanceState){

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_one);
        btnActivityOne = (Button) findViewById(R.id.btnActivityOne);
        btnActivityTwo = (Button) findViewById(R.id.btnActivityTwo);

        btnActivityOne.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(MyActivity.this,"Activity One Button",Toast.LENGTH_SHORT).show();
            }
        });

        btnActivityTwo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(MyActivity.this,"Activity Two Button",Toast.LENGTH_SHORT).show();
            }
        });

    }
}

答案 2 :(得分:0)

使用actvities本身的简单工作

第一个问题

content of R.layout.activity_two within your LinearLayout

使用<include ../>标记

例如:<include layout="@layout/activity_two" />

中的LinearLayout

第二个问题

if possible use the code from its activity class (the onClickListeners etc).

创建一个类Extends Activity并添加所有共同需要的侦听器,并将该类命名为BaseActivity,并为您的2个活动扩展BaseAcitivity而不是Activity。