我有一个Android应用程序,在每个活动中我都有相同的自定义ActionBar(只是一个RelativeLayout),它包含徽标和一些按钮。
问题在于,对于每个活动,按钮都是不同的,并与当前活动中的视图进行交互。
我首先创建了一个自定义视图,我可以将其添加到每个活动布局中,但似乎这不是最好的解决方案 - 因为自定义ActionBar必须保存与所有视图的所有交互,并且访问布局本身。
什么是正确的方法?创建自定义Actionbar,其中包含所有活动的一些通用设计以及每个活动的一些不同功能。
由于
答案 0 :(得分:0)
按照以下DRY指南,我建议为操作栏创建自定义视图。 还可以对其进行配置,以便您可以指定在哪个活动中需要多少个按钮。
您可以通过passing custom attributes动态设置按钮或在xml文件中设置按钮。
为了让按钮与布局上的其余部分进行交互,您应该在活动中点击监听器进行设置:
public class MyActivity extends Activity {
MyActionBar actionBar;
public void onCreate(Bundle bundle) {
actionBar = (MyActionBar) findViewById(R.id.action_bar);
Button firstButton = actionBar.getButton(1);
firstButton.setOnClickListener(new OnClickListener(){
public void onCLick() {
// interact with main activity
}
}
}
}
如果您是真正的xml粉丝,您可以执行类似于Android使用onClick
属性所做的操作。它使用反射来调用提供的父方法。Info about that和source code。也许你可以重用已经实现的东西,或者从Android复制和改编。
如果你需要任何帮助,请给我一个大喊。