我有一个常见的布局,在顶部栏有四个按钮,我在所有活动中使用此布局,在所有活动布局中包含该公共布局 由
<include ... >
但我必须在所有活动中使用4个按钮点击事件 是否有任何comman方式来创建在所有活动中使用的自定义活动,我已经在活动中创建并实现该活动中的4按钮单击事件并在所有活动中扩展该活动但它对我不起作用。 请给我一些想法。 感谢
答案 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)
使用4个按钮定义标题布局,并在xml布局中定义android:onClick属性,例如: android:onClick="btnHomeClick"
,android:onClick="btnSearchClick"
....等。
通过扩展Activity并实现所有这些click方法来定义Abstract类:
public void btnHomeClick(View v) {
}
public void btnSearchClick(View v)
{
}
在xml布局文件中按标记包含标题布局。 现在,在每个活动类中扩展上述活动类。
这样您只需要定义一次点击事件。
答案 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