有关在xml中包含标记和视图实现的问题

时间:2012-12-04 15:24:21

标签: android include

大家好,提前谢谢你,对不起我的英语。我有两个很大的疑问

1 - 我没有太多时间在android中编程,我很确定我有很多错误的方法。例如,我已经制作了几个应用程序,其中在xml定义中我包含另一个xml。

例如,假设有两个活动xml定义中包含header_section.xml的活动。那header_section有5个按钮和更多的视图等。好吧,在xml中只是制作一个包含它的工作......但是要实现按钮.....我是否必须在两个活动中重复代码? ?在两个活动中复制代码听起来真的很糟糕.....但我怎么办,例如在活动A和B中呢?我是否必须在两个活动类中使用此代码完全相同????

private View header_section;
private Button bExample;

header_section=findViewById(R.id.header_section);
bExample=(Button)header_section.findViewById(R.id.bExample);

bExample.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {               
        //Whatwever...call a number, for example
    }
});

在主要的xml中,例如:

<LinearLayout 
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="0dp" >  
    <include android:id="@+id/header_section" android:layout_gravity="center" android:gravity="center" layout="@layout/header_section" />
</LinearLayout>

和header_section.xml中的内容类似:

<LinearLayout 
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="0dp" >  
        <Button android:id="@+id/bExample"  />
</LinearLayout>    

2 - 想象一下,您的应用中有10个活动。如果在所有这些中都有一个标题部分和底部部分具有相同的功能,只更改中心区域(显示不同的列表,视图等)......最好在所有应用程序中只有一个活动, viewflipper在中心区?或者有10个活动,我不知道是否可以避免,在第1点询问,在所有10个活动中重复执行标题和底部视图,处理程序等的代码?

谢谢和最好的问候

1 个答案:

答案 0 :(得分:0)

1)是的,通常,你应该使用它们但是你可以使它更简单......

1.a)bExample =(Button)findViewById(R.id.bExample); //不需要加载视图

1.b)您可以在LAYOUT中的button / clicable元素中缩短调用onclick的方式,这是一个例子:

 <!--inside layout --> 
    <Button android:id="@+id/bExample"  android:onClick="aceptar" />

   //inside the Activity
   public void aceptar(View v){
       //here the code of the button
   }

有关在所有活动中实施相同方法的问题,请查看以下帖子:Adding the same context menu to multiple activities

2)取决于应用 如果您没有做太多,可以在同一个活动中加载所有内容并隐藏/显示您不想要的布局元素。 但是最好使用不同的活动,无论如何,如果布局不是“沉重”(太多的元素/包含在里面)你可以加载所有活动的SAME布局,你只需要改变不同的内容(字符串)和/或隐藏/显示不同的元素。