我尝试了一些看法,从抽象的ClassB的传递到ClassA的,这样ClassA的可以用传球观点:ClassA extends ClassB
从抽象的活动
而不是使用像这样为每个视图的我想继承/传递:
protected View getView1() {
return view1;
}
我想批量的方式,让ClassX(在这种情况下,ClassA的)知道它应该使用哪些视图。但请保留一些对ClassB不公开的自用视图。
下面的代码确实有效,但可以这样做吗?或者,还有更好的方法?
public abstract class ClassB extends Activity {
abstract void useTheseViews(View view1, View view2);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View view1 = findViewById(R.id.view1);
View view2 = findViewById(R.id.view2);
useTheseViews(view1, view2);
View view3 = findViewById(R.id.view3);
view3.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// do something independent here
}
});
}
}
public class ClassA extends ClassB {
private View view1, view2;
@Override
void useTheseViews(View view1, View view2) {
this.view1 = view1;
this.view2 = view2;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
view1.setOnClickListener(..);
view2.setOnClickListener(..);
}
}
原因? ClassA和ClassX使用相同的基本布局,但在相同的视图上执行不同的功能。
我的ClassB拥有一个基础布局,并初始化视图(按钮,开关..),并使用一些视图为自己,而不管它是什么类扩展它。
你为什么不使用碎片?这是一个更好的方式来撰写你的活动。 – AnixPasBesoin
如果您显示每个屏幕的一些屏幕截图或模型,它将帮助我们更好地理解您在做什么。正如Anix所提到的,使用Fragments而不是Activities可能会更好。 –
与片段您以模块化方式撰写您的活动,继承您以分层方式撰写您的活动,我不明白片段如何解决问题在这里 – lelloman