滑动标签和片段行为

时间:2014-12-15 06:59:06

标签: android android-fragments

我有一个滑动标签程序,工作正常。

我想将数据从片段传递到包含活动。我试图关注(http://developer.android.com/training/basics/fragments/communicating.html

我在以下一行收到错误:

    dataPasser = (onDataPass) activity;

带有以下描述:

java.lang.ClassCastException: com.example.bernard.tab.MyActivity cannot be cast to com.example.bernard.tab.fragment1$onDataPass
        at com.example.bernard.tab.fragment1.onAttach(fragment1.java:34)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:903)

附上代码:

public class fragment1 extends Fragment {

onDataPass dataPasser;

public fragment1() {
    // Required empty public constructor
}

public interface onDataPass {
    public void onPass(String s);
}

@Override
public void onAttach(Activity activity){
    super.onAttach(activity);
    dataPasser = (onDataPass) activity;
}

您能否提供帮助以理解此错误?

随后的问题:

我的包含活动如下:

public class MyActivity extends FragmentActivity implements
    ActionBar.TabListener {

private ViewPager viewPager;
private ActionBar actionBar;
private tabpager tabPagerAdapter;
private String[] tabs = { "A", "B", "C", "D", "E", "F" };
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
    viewPager = (ViewPager) findViewById(R.id.pager);
    tabPagerAdapter = new tabpager(getSupportFragmentManager());
    viewPager.setAdapter(tabPagerAdapter);
    actionBar = getActionBar();
    etc ...

所以我的问题是因为它已经有一个"实现了ActionBar.TabListener"我该如何引用接口onDataPass

非常感谢一些示例代码:)

提前多多感谢!

1 个答案:

答案 0 :(得分:1)

一个类只能扩展一个超类,但它可以实现任意数量的接口。 Java类可以有多个接口。所以只需改变这个

public class MyActivity extends FragmentActivity implements
  ActionBar.TabListener,DataPass