2012-08-13 149 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

这应该给你一个想法如何使片段活动通信发生。