在所有活动中使用通用布局及其事件

时间:2011-12-12 08:35:21

标签: android

我有一个常见的布局,在顶部栏有四个按钮,我在所有活动中使用此布局,在所有活动布局中包含该公共布局 由

<include ... >

但我必须在所有活动中使用4个按钮点击事件 是否有任何comman方式来创建在所有活动中使用的自定义活动,我已经在活动中创建并实现该活动中的4按钮单击事件并在所有活动中扩展该活动但它对我不起作用。 请给我一些想法。 感谢

5 个答案:

答案 0 :(得分:2)

是的,您可以将一个活动说成 HeaderActivity

onCreate setContentView(R.layout.header);设置 header.xml

并在此课程中编写所有Button Click事件并

现在在其他活动中扩展了HeaderActivity。 等,

public class SecondActivity extends HeaderActivity
{
}

显示不同的布局..

将LinearLayout放在header.xml下面的按钮中,并在其他活动中使用

ViewGroup vg = (ViewGroup) findViewById(R.id.lldata);
ViewGroup.inflate(getApplicationContext(), R.layout.listwitter, vg);

此处 lldata是header.xml中的LinearLayout

在差异活动中显示不同的布局。

答案 1 :(得分:1)

你应该能够像你说的那样使用基本的OOP策略。创建处理onClick事件的父活动。然后你的所有活动都应扩展到那个父。只要方法不是私有的,它们就会自动访问onClick事件。

如果您需要在每个活动中对点击进行不同的操作,可能值得以不同的方式接近它,或使用回叫样式。基本结构示例:

public class ParentActivity extends Activity {
    public void onMyButtonClick(View v) {
        // do your thing
    }
}

public class ChildActivity extends ParentActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // your activity
    }
}

答案 2 :(得分:1)

  1. 使用4个按钮定义标题布局,并在xml布局中定义android:onClick属性,例如: android:onClick="btnHomeClick"android:onClick="btnSearchClick" ....等。

  2. 通过扩展Activity并实现所有这些click方法来定义Abstract类:

    public void btnHomeClick(View v) {
    }
    
    public void btnSearchClick(View v)
    {
    }
    
  3. 在xml布局文件中按标记包含标题布局。 现在,在每个活动类中扩展上述活动类。

  4. 这样您只需要定义一次点击事件。

答案 3 :(得分:0)

你好Bindalbhai ..

MainActivity myAct = (MainActivity) this.getParent();

TextView myTitleText = (TextView)myAct.findViewById(R.id.txtTitle);

它可能会帮助你。或者您也可以使用 ViewGroup

感谢。

答案 4 :(得分:0)

创建一个静态对象以便监听按钮clicks.Based on this object处理所有活动中的事件。

例如说Constants.class:

public class Constants {
    private static int buttonState1;
        public static int getButtonState(){
        return buttonState1;
    }
    public static int  setButtonState(int x){
        buttonState1=x;
    }


}

在你的活动中:

Button bt1=(Button)  findViewById(R.id.bt1);

bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                                   Constants.setButtonState(1);
                         }
            });

以及其他活动

if(Constants.getButtonState()==1)
                //do something