2013-01-26 3 views
1

У меня есть приложение с настраиваемым пользователем объектом, MyObject, что позволяет пользователю выбирать окно определенного типа для отображения позднее. На этом этапе выбор будет равен либо DialogFragment, либо 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 от того же базового класса в моем приложении?

Должен ли я вместо этого делать что-то более сложное, используя два аргумента 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... 
} 

ответ

1

Посмотрите, я не парень OO. Я предпочитаю функционировать, но хочу испытать себя здесь. Итак, давайте следовать идее mvc. У вас есть модель, myobject и выбор двух видов, диалога или активности. Правильное место для кристаллизации отображения между представлениями и объектами является контроллером, правильно? Ваши два представления могут расширить класс View. Ваше приложение не должно расширять класс представления. Он должен скорее расширить класс контроллера.

Также вы классифицируете различные действия или события в пользовательском интерфейсе? Я не думаю, что вы должны это сделать, если вы не предпримете пару событий в гештальте. В этом случае есть суперкласс класса ComplexEvent и либо список событий для ловушки, либо подклассы, которые служат той же цели.

Смежные вопросы

 Смежные вопросы