【问题标题】:Changing the fragment on button click在按钮单击时更改片段
【发布时间】:2012-08-13 09:52:24
【问题描述】:

我有一些带有一些按钮的片段,即下一个和上一个。每当单击按钮时,我都需要转到下一个片段。实际上我是用 ViewPager 实现的,所以当用户滑动它时,它会移动到下一个片段。但是我怎样才能通过单击按钮来更改片段。请注意,按钮存在于 Fragment 类而不是 FragmentActivity 类中。

【问题讨论】:

标签: android android-fragments android-button


【解决方案1】:

如果按钮是片段的一部分,那么您的父活动应该实现您的片段也可以理解的接口。然后,当按下按钮时,它会告诉父 Activity 并替换片段。如果按钮是活动布局的一部分,请阅读有关使用片段管理器及其事务管理片段的信息。

【讨论】:

    【解决方案2】:
    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

    这应该让您了解如何进行片段活动通信。

    【讨论】:

      猜你喜欢
      • 2016-04-30
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多