不同片段中按钮(OnClickListener)的不同操作

时间:2014-10-13 21:40:19

标签: android android-fragments onclicklistener

我有一个带有三个片段的FragmentActivity,并希望在每个片段中使用不同的操作处理setOnClickListener,但Button返回最后片段的操作。

现在,如何才能制作Different action for button in distinct fragment

FragmentActivity中的

    @Override
    public Fragment getItem(int position) {
        FrameLayout frameLayout=reg_next;
        switch (position) {
        case 0: // Fragment # 0 - This will show FirstFragment
            return o1.newInstance(0, "1",vpPager,ButtonNext);
        case 1: // Fragment # 0 - This will show FirstFragment different title
            return o2.newInstance(1, "2",vpPager,ButtonNext);
        case 2: // Fragment # 0 - This will show FirstFragment different title
            return o3.newInstance(2, "3");   
        default:
            return null;
        }
    }
碎片中的

{
 ...
  ButtonNext.setOnClickListener(this);
 ...
}

在片段1中:

    @Override
public void onClick(View v) {
    Toast.makeText(getActivity(), "Fragment Number  1",0).show();

}

在片段2中:

    @Override
public void onClick(View v) {
    Toast.makeText(getActivity(), "Fragment Number 2",0).show();

}

但总是返回Fragment Number 2 setOnClickListener event,即使当前片段是第一个片段(片段1)

distinct fragment

中有多种处理方式

1 个答案:

答案 0 :(得分:1)

在你的情况下,我会这样做:

  1. 在您的活动中定义onClick侦听器,而不是在您的片段中。这将像调度员一样。
  2. 为每个按钮设置不同的ID(为了能够区分它们)。
  3. 绑定变量以指示当前片段。每次加载一个片段(我想在你的getItem中,但我不确定),将你的变量设置为标识片段的东西(例如.class或String值)。
  4. 使用if / else根据“绑定变量”选择按钮的操作,并调用处理事件的片段中声明的方法。(例如:buttonFragment3Clicked(View v)),在第三个片段中声明
  5. 我希望这有帮助!! :)