我有一些带有一些按钮的片段,即下一个和上一个。每当单击按钮时,我都需要转到下一个片段。实际上我是用 ViewPager 实现的,所以当用户滑动它时,它会移动到下一个片段。但是我怎样才能通过单击按钮来更改片段。请注意,按钮存在于 Fragment 类而不是 FragmentActivity 类。
问问题
1497 次
2 回答
1
如果按钮是片段的一部分,那么您的父活动应该实现您的片段也可以理解的接口。然后,当按下按钮时,它会告诉父 Activity 并替换片段。如果按钮是活动布局的一部分,请阅读有关使用片段管理器及其事务管理片段的信息。
于 2012-08-16T19:14:27.613 回答
-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
这应该让您了解如何进行片段活动通信。
于 2014-02-08T22:00:38.050 回答