ユーザーが構成可能なオブジェクトを備えたアプリがありますMyObject
。これにより、ユーザーは特定のタイプのウィンドウを選択して、後日表示することができます。この時点で、選択肢はaDialogFragment
または。のいずれかになりFragmentActivity
ます。
後日MyObject
呼び出されると、アプリは構成されたで選択されたオプションに基づいてダイアログ/フラグメントを表示するという考え方ですMyObject
。基本的に、両方のタイプのウィンドウの機能は同じで、表示が異なるだけです。
私はこれらの線に沿って何かをするために抽象クラスのセットアップを作成することから始めました
public abstract MyDialog extends DialogFragment {
private static mDialog;
public abstract void close();
public abstract void open();
public abstract void start();
public abstract void stop();
public MyDialog (MyObject myO) {
switch (myO.getDialogType()) {
case 1: // MyDialog1
mDialog = new MyDialog1(myO);
break;
case 2: // MyDialog2
mDialog = new MyDialog2(myO);
break;
}
mDialog.open();
}
}
public MyDialog1 extends MyDialog {
@override
pubilic void onCreateDialog() {
}
// other implemented methods...
}
public MyDialog2 extends MyDialog {
@override
pubilic void onCreateDialog() {
}
// other implemented methods...
}
私が立ち往生しているのは、私が今、と同じheirachyを追加しようとしているということですActivityFragment
、私はもう拡張できませんMyDialog
。MyDialog
拡張Fragment
してから子クラスを拡張しようとしましたが、それは多重継承に実行され、発生することはありませんDialogFragment
。FragmentActivity
DialogFragment
両方のタイプを拡張する方法はありActivityFragment
ますか?また、私のアプリの同じ基本クラスからですか?
代わりに、2つのcaseステートメントを使用して、このようなより複雑なことを行う必要がありますか?抽象化の方法でこれほど多く使用したことがないので、間違って使用していますか?
public MyApp extends FragmentActivity {
MyObject mMyO;
public void someEvent() {
if (mMyO.getDisplayType() == "Activity") {
MyActivity myA;
switch (mMyO.getType()) {
case 1: // MyActivity1
myA = new MyActivity1(mMyO);
break;
case 2: // MyActivity2
myA = new MyActivity2(mMyO);
break;
}
myA.open();
}
if (mMyO.getDisplayType() == "Dialog") {
MyDialog myD;
switch (mMyO.getType()) {
case 1: // MyDialog1
myD = new MyDialog1(mMyO);
break;
case 2: // MyDialog2
myD = new MyDialog2(mMyO);
break;
}
myD.open();
}
}
}
public MyDialog1 extends MyDialog {
@override
pubilic void onCreateDialog() {
}
// other implemented methods...
}
public MyDialog2 extends MyDialog {
@override
pubilic void onCreateDialog() {
}
// other implemented methods...
}
public MyActivity1 extends MyActivity {
@override
pubilic void onCreate() {
}
// other implemented methods...
}
public MyActivity2 extends MyActivity {
@override
pubilic void onCreate() {
}
// other implemented methods...
}