2014-12-15 3 views
2

У меня есть программа прокрутки вкладок, которая отлично работает.поведение промахов и фрагментов

Я хотел бы передать данные из фрагмента в содержащуюся деятельность. Я пытался следовать (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 ?

Некоторые примеры кода были бы оценены :)

Спасибо большое заранее!

+0

прежде всего не использовать onAttach для передачи активности данных фрагменту. –

ответ

1

Класс может распространяться только на один суперкласс, но он может реализовывать столько интерфейсов, сколько захочет. Класс Java может иметь более одного интерфейса. Так что просто измените это

public class MyActivity extends FragmentActivity implements 
    ActionBar.TabListener,DataPass 
+0

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

+0

Ваш приветственный @narb, пожалуйста, оцените ответ также –

+0

не уверен, как это сделать. Я отметил галочку, и я увеличил верхнюю стрелку. это позволяет мне просто подняться до 1. – narb

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