私はにClassAが使用できるように、抽象ClassBのからにClassAにいくつかのビューを渡すためにしようとしている:ClassA extends ClassB
渡す景色
代わりの各ビューのためにこのようなものを使用して、私は継承されしたいです/私はClassX(この場合、A級では)それを使用する必要があります見ている知っているようにするバルク方法をしたい
protected View getView1() {
return view1;
}
:に渡されました。しかし、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は同じ基本レイアウトを使用しますが、同じビューでは異なる機能を実行します。
My ClassBは基本レイアウトを保持し、ビュー(ボタン、スイッチ..)を初期化し、どのクラスを拡張しているかにかかわらずビューの一部を使用します。
なぜフラグメントを使用しないのですか?あなたの活動を構成するより良い方法です。 – AnixPasBesoin
これは、各画面のスクリーンショットやモックアップを表示すると、自分が行っていることをよりよく理解するのに役立ちます。 Anixが述べたように、アクティビティの代わりにフラグメントを使用するほうが良いかもしれません。 –
フラグメントを使用してモジュラ形式でアクティビティを作成し、継承を使用してアクティビティを階層的に構成すると、フラグメントがこの問題をどのように解決するかはわかりません – lelloman