2012-08-13 3 views
0

У меня есть фрагменты с некоторыми кнопками, т. Е. Следующий & предыдущий. Всякий раз, когда нажимается кнопка, мне нужно перейти к следующему фрагменту. Фактически я реализовал это с помощью ViewPager, поэтому, когда пользователь перебирает его, он переходит к следующему фрагменту. Но как я могу изменить фрагмент, просто нажав кнопки. Обратите внимание, что кнопки присутствуют в классе Fragment не в классе FragmentActivity.Изменение фрагмента на кнопке

+0

Взгляните на FragmentManager (http://developer.android.com/reference/android/app/FragmentManager.html) и FragmentTransaction (http://developer.android.com/reference/android/app/ FragmentTransaction.html) – Sprigg

ответ

1

Если кнопка является частью фрагмента, то ваша родительская активность должна реализовать интерфейс, который ваши фрагменты также поймут. Затем, когда кнопка нажата, она должна сообщить родительской активности об этом, и она должна заменить фрагмент. Если кнопка является частью макета активности, прочитайте об управлении фрагментами с помощью Fragment Manager и его транзакций.

-1
public class FragmentWithButtons extends Fragment { 

    public interface Callbacks { 
     void nextFragment(); 
     void previousFragment(); 
    } 

    private static Callbacks sDummyCallbacks = new Callbacks() { 
     void nextFragment() { 
      // ignore 
     } 
     void previousFragment() { 
      // ignore 
     } 
    } 

    private Callbacks mCallbacks = sDummyCallbacks; 

    private Button mPrevBtn; 
    private Button mNextBtn; 

    private View.OnClickListener mPrevBtnListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mCallbacks.previousFragment(); 
     } 
    } 

    private View.OnClickListener mNextBtnListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mCallbacks.nextFragment(); 
     } 
    } 

    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     if (!(activity instanceof Callbacks) { 
      throw new IllegalStateException("Activity: " + activity + " must implement " + Callbacks.getCanonicalName()); 
     } 
     mCallbacks = (Callbacks) activity; 
    } 

    public void onDetach() { 
     super.onDetach(); 
     mCallbacks = sDummyCallbacks; 
    } 
} 

public class ActivityWithButtonFragment extends Activity implements FragmentWithButtons.Callbacks { 
    @Override 
    public void previousFragment() { 
     // switch to previous fragment using FragmentManager... 
    } 

    @Override 
    public void nextFragment() { 
     // switch to next fragment using FragmentManager... 
    } 
} 

Кроме того, проверить http://developer.android.com/training/basics/fragments/communicating.html

Это должно дать вам представление о том, как сделать связь фрагмента активности происходит.

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