2014-12-19 6 views
0

Извините за долгое Q!салфетки с вложенными фрагментами

У меня есть следующий код, который отлично работает: нажмите кнопку, которая запускает 2 фрагмента, 1 со списком, а другой показывает некоторые данные по щелчку элемента. Поскольку у меня есть несколько кнопок, делающих то же самое, я пытаюсь изменить код, чтобы прокручивать вкладки.

Итак, у меня есть функция MenuVoice, у которой есть VoicePagerAdapter, который реализует фрагменты.

MenuVoice

public class MenuVoice extends FragmentActivity { 
... 
    viewPager = (ViewPager) findViewById(R.id.pager_voice); 

    FragmentManager fm = getSupportFragmentManager(); 

    voicePagerAdapter = new VoicePagerAdapter(getSupportFragmentManager()); 
    voicePagerAdapter.voicePassInt(lang,level); 
    voicePagerAdapter.voicePassString(login); 
    viewPager.setAdapter(voicePagerAdapter); 

VoicePagerAdapter

public class VoicePagerAdapter extends FragmentPagerAdapter { 
... 
@Override 
public Fragment getItem(int index) { 
    Bundle bundle; 
    Fragment c = null; 
    if (index == 0) { 
     c = new VoiceSong_fragment(); 

VoiceSong конкретизирует 2 фрагмента, используя XML, 1-й фрагмент, реализующий список SongFragment1 и второй один, который должен отображать коснуться.

И, наконец, я использую интерфейс для связи между фрагментом SongFragment1 и SongFragment2 через фрагмент VoiceSong.

XML

<fragment 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:name="com.example.bernard.speechparole.SongFragment1" 
    android:id="@+id/song_fragment1" 
    /> 

<fragment 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:name="com.example.bernard.speechparole.SongFragment2" 
    android:id="@+id/song_fragment2" 
    /> 

SongFragment1 разваливается на initialisatio интерфейса comunicator:

public class SongFragment1 extends Fragment implements AdapterView.OnItemClickListener{ 
... 
@Override 
public void onActivityCreated(Bundle savedInstanceState){ 
    super.onActivityCreated(savedInstanceState); 

    --> communicator = (SongCommunicator) getActivity(); 

с MSG:

java.lang.ClassCastException: com.example.bernard.speechparole.MenuVoice cannot be cast to com.example.bernard.speechparole.SongCommunicator 
     at com.example.bernard.speechparole.SongFragment1.onActivityCreated(SongFragment1.java:78) 
     at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1794) 

Что я делаю не так? Что бы вы сделали в этом сценарии?

Любая подсказка об ошибке?

Большое спасибо!

ответ

0

Я нашел проблему, связанную с интерфейсом коммуникатора во фрагменте. По-видимому, это не разрешено?

Это означает, что я должен быть разделен в своей деятельности (2 прохода, передающих данные omItemClick)? И тогда он не может находиться внутри одной салфетки?

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