【问题标题】:Issue regarding include tag in xml and implementation of the views关于在 xml 中包含标签和视图实现的问题
【发布时间】:2012-11-22 06:33:43
【问题描述】:

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

1 - 我没有太多时间在 android 上编程,而且我很确定我做了很多事情都是错误的。例如,我制作了几个应用程序,其中在 xml 定义中我包含了另一个 xml。

例如,假设 2 个带有 header_section.xml 的活动包含在两个活动的 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 个活动。如果在所有应用程序中都有一个具有相同功能的标题部分和底部部分,则只更改中心区域(显示不同的列表、视图等)......最好在所有应用程序中只有一个活动,并带有取景器在中心区域?或者有 10 个活动,我不知道是否可以避免,在第 1 点中询问,在所有 10 个活动中重复代码以实现标题和底部视图、处理程序等?

感谢和问候

【问题讨论】:

    标签: android include


    【解决方案1】:

    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) 取决于应用程序 如果你做的不多,你可以在同一个活动中加载所有内容并隐藏/显示你不想要的布局元素。 但是最好使用不同的活动,无论如何,如果布局不是“重”(内部元素/包含太多),您可以为所有活动加载相同的布局,您只需要更改不同的内容(字符串)和/或隐藏/显示不同的元素。

    【讨论】:

    • 嗨乔迪,谢谢回答。关于问题 1)我仍然觉得很奇怪你必须在 10 个地方重复代码,但是我认为你发布的链接是一个非常大的方法 :) 关于 2)我认为我应该这样做,并且都在同一个 xDD
    • 嗨 Rako,希望链接对您有所帮助:)。大约 2,在低类别手机中尝试它,因为如果您在布局中使用太多组件(和/或在列表视图中放置大量图片,......)它可能会在加载时崩溃(也在中高类别设备中)。大约在一个活动中,如果它们不是很多东西..用一两个变量来跟踪你的实际“活动”很容易做到,菜单不会移动,所以用 ViewFlipper 来管理转换(如果你想要)会是一个不错的结果:)
    猜你喜欢
    • 2012-07-05
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 2011-10-11
    相关资源
    最近更新 更多