使用嵌套片段滑动选项卡

时间:2014-12-19 20:35:57

标签: android android-fragments

很抱歉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使用xml实例化2个片段,第一个片段实现列表SongFragment1,第二个片段应该显示某些片段。

最后我使用一个接口通过片段VoiceSong在片段SongFragment1和SongFragment2之间进行通信。

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正在崩溃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)

我有什么问题吗?在那种情况下你会做什么?

有关错误消息的任何线索吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

我发现了与片段中的通信器接口相关联的问题。显然这不是授权?

这意味着我所做的必须在自己的活动中分开(2个传递数据omItemClick)?然后它不能在一个滑动标签内?