1

Я создал MainActivity, который состоит из 3 вкладок, которые можно прокручивать (с помощью ViewPager). Теперь каждый из этих 3 вкладок является фрагментом. Кроме того, я использую ActionBarSherlock (ABS).Может ли фрагмент продлить действие фрагмента? [Android]

За 1-й фрагмент, я создал следующий класс:

public class Fragment_1 extends SherlockFragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     View v = inflater.inflate(R.layout.fragment1, container, false); 
     return v; 
     /* R.layout.fragment1 only contains a TextView. */ 
    } 
} 

Для 2-го фрагмента, я хочу продлить FragmentActivity, как показано ниже.

public class Fragment_2 extends FragmentActivity { 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.fragment2); 
     } 
} 

3-й фрагмент такой же, как и первый.

Но когда я запускаю приложение, он падает. Итак, я ошибаюсь в расширении FragmentActivity для класса Fragment_2? Нельзя ли расширять классы FragmentActivity или даже Activity для фрагментов? Если нет, то в чем проблема?

Спасибо.


EDIT: После @ ответ CommonsWare, я обновил свой класс следующим образом:

public class Fragment_2 extends SherlockFragment { 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      Button send = (Button) findViewById(R.id.bSend); //Error at this line 
      //some error free code 
      FragmentTransaction t = getSupportFragmentManager().beginTransaction(); //Error at this line 
     } 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    View v = inflater.inflate(R.layout.fragment2, container, false); 
    return v; 
} 

Мои последние два вопроса:

  1. Как мне получить доступ к моей R.id. Кнопка bSend в классе Fragment_2.
  2. Eclipse дает предложение изменить getSupportFragmentManager() на getFragmentManager(). Это все в порядке?

Спасибо!

ответ

8

Нельзя ли распространять FragmentActivity или даже Activity на фрагментные классы?

Fragment - класс Java. Реализации фрагментов (для использования в качестве страниц в вашем ViewPager) должны наследоваться от Fragment, прямо или косвенно.

Activity не наследует от Fragment. FragmentActivity не наследуется от Fragment. Следовательно, вы не можете наследовать от Activity или FragmentActivity и как-то также унаследовать от Fragment.

+0

Можете ли вы предложить обходной путь для моей проблемы? –

+0

@BornAgain: вы можете наследовать 'Fragment_2' из' Fragment'. Обратите внимание, что вы никогда не объясняли, почему вы «хотите расширить FragmentActivity». – CommonsWare

+0

Проблема в том, что внутри класса Fragment_2 мне нужно использовать setContentView(), для которого мне нужно расширить Activity или FragmentActivity. Но это невозможно. –

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