2012-08-13 145 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 2012-08-13 09:56:28

回答

1

如果button是片段的一部分,那麼你的父級活動應該實現你的片段也會理解的接口。然後,當按鈕被擊中時,它應該告訴父項活動並且它應該替換該片段。如果按鈕是活動佈局的一部分,那麼請閱讀使用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

這應該給你一個想法如何使片段活動通信發生。