Android 单击按钮更改片段

Android 单击按钮更改片段,android,android-fragments,android-button,Android,Android Fragments,Android Button,我有一些按钮的碎片,即下一个和上一个。无论何时单击按钮,我都需要转到下一个片段。实际上,我用ViewPager实现了这一点,所以当用户滑动它时,会转到下一个片段。但是我如何通过点击按钮来改变片段呢。请注意,按钮出现在Fragment类中,而不是FragmentActivity类中。如果按钮是片段的一部分,则您的父活动应实现您的片段也能理解的接口。然后,当按下按钮时,它将告诉父活动这一点,并将替换片段。若按钮是活动布局的一部分,那个么请阅读有关使用片段管理器管理片段及其事务的内容 public c

我有一些按钮的碎片,即下一个和上一个。无论何时单击按钮,我都需要转到下一个片段。实际上,我用ViewPager实现了这一点,所以当用户滑动它时,会转到下一个片段。但是我如何通过点击按钮来改变片段呢。请注意,按钮出现在Fragment类中,而不是FragmentActivity类中。

如果按钮是片段的一部分,则您的父活动应实现您的片段也能理解的接口。然后,当按下按钮时,它将告诉父活动这一点,并将替换片段。若按钮是活动布局的一部分,那个么请阅读有关使用片段管理器管理片段及其事务的内容

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...
    }
}
还有,看看


这将使您了解如何进行片段活动通信。

看看FragmentManager()和FragmentTransaction()