更改按钮上的片段单击
问题描述:
我正在使用某些按钮的片段,即前一个&。每当按钮被点击时,我需要移动到下一个片段。其实我用ViewPager来实现这个功能,所以当用户滑动它时,它会移动到下一个片段。但是我怎样才能通过点击按钮来改变片段。请注意,按钮存在于Fragment类中,而不是在FragmentActivity类中。更改按钮上的片段单击
答
如果button是片段的一部分,那么你的父级活动应该实现你的片段也会理解的接口。然后,当按钮被击中时,它应该告诉父项活动并且它应该替换该片段。如果按钮是活动布局的一部分,那么请阅读使用Fragment Manager及其事务管理片段。
答
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
这应该给你一个想法如何使片段活动通信发生。
看看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