2015-06-25 4 views
2

Я разрабатываю проект Android с Activity и некоторыми фрагментами. Идея такова: когда действие запускается, он показывает фрагмент A, и когда пользователь нажимает кнопку Fragment A, действие должно заменить фрагмент A, но новый экземпляр фрагмента B, я хотел бы сделать фрагменты полностью независимыми активности хозяина, как модульные фрагменты.Как создать интерфейс с общим типом и наследованием фрагмента Android?

Итак, я хочу реализовать простой интерфейс, который поможет мне изменить текущий фрагмент на активность на другой. В интерфейсе я создал один метод, который мог бы управлять FragmentTransaction для любого типа объекта наследования класса Fragment, но я немного потерял эту проблему, я искал и читал много документации, но я не мог получить четкого ответа о это. Я не уверен, как это сделать. У меня есть некоторый код, но это неверная или неполная

Вот мой интерфейс для моего фрагмента A:

public interface ActivityInterface { 
    void replaceFragment(int fragmentId, <? extends Fragment> fragment); 
} 

это будет осуществление деятельности:

public class MyActivity implements ActivityInterface { 

    public void replaceFragment(int fragmentId, <? extends Fragment> fragment) { 
     FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); 
     fragmentTransaction.replace(fragmentId, fragment); 
     fragmentTransaction.commit(); 
    } 

} 
  • Как я могу получить его за работой?
  • Есть ли лучшее решение для этого?

Я новичок в теме «Java Generics», поэтому, пожалуйста, будьте ясны, я был бы очень признателен.

+1

Это то, что вы точно должны сделать: HTTP: // developer.android.com/training/basics/fragments/communicating.html – ganeshvjy

ответ

1

Я считаю, что вы ищете это:

public interface ActivityInterface { 
    <T extends Fragment> void replaceFragment(int fragmentId, T fragment); 
} 

public class MyActivity implements ActivityInterface { 

    public <T extends Fragment> void replaceFragment(int fragmentId, T fragment) { 
     FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); 
     fragmentTransaction.replace(fragmentId, fragment); 
     fragmentTransaction.commit(); 
    } 
} 

(хотя формально я думаю, что бы хорошо работать с просто void replaceFragment(int fragmentId, Fragment fragment);)

+0

Вопрос довольно запутанный, если вы подумаете об этом. Это не требует использования дженериков вообще, как вы правильно указали :) – CKing

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