繁体   English   中英

单击按钮后如何从第二个片段移动到第一个片段?

[英]How to move from second fragment to first fragment after click on button?

我创建了一个视图分页器,其中两个片段用于从一个片段移动到第二个片段。 在第二个片段页面中,我需要以下内容:单击按钮时,片段从第二个变为第一个片段; 在视图中,分页器表示第二页到第一页。 第一个和第二个片段具有自己的XML文件,而视图分页器位于主片段的XML文件中。

手段:

  1. class ViewPagerMainActivity extends FragmentActivity包含主XML文件,该文件包含ViewPager
  2. 第一和第二片段类扩展了片段并拥有自己的设计xml文件

现在,我需要从第二个片段移到第一个片段。 我怎样才能做到这一点?

我的ViewPagerMainActivity是以下

 public class CopyOfViewPagerMainActivity extends FragmentActivity implements
    OnClickListener, OnPageChangeListener {

Button btnBack, btnNextImage;
LinearLayout llMainPager;
TelephonyManager telemamanger;
TextView txtOpname, txtCharge;
String operatorCodeName;
int level = -1;
double scale;
int rawlevel;
LinearLayout llayoutMainpager;
int image;
ViewPager pager;
Boolean flagzoom, flagscale, flagfade, flagdepth, flagnone, flagpivot,
        flag3d;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.view_pager_main);


    // my  other code here

}

private class MyPagerAdapter extends FragmentPagerAdapter {

    public MyPagerAdapter(
            android.support.v4.app.FragmentManager fragmentManager) {
        super(fragmentManager);
    }

    @Override
    public Fragment getItem(int pos) {
        switch (pos) {

        case 0:
            return FirstFragment.newInstance("");

        case 1:
            return SecondFragment.newInstance("");

        default:
            return SecondFragment.newInstance("Default");
        }
    }

    @Override
    public int getCount() {
        return 2; // return no of fragment created by us
    }
}

@Override
public void onClick(View v) {

}

@Override
public void onPageScrollStateChanged(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
    // TODO Auto-generated method stub

}

@Override
public void onPageSelected(int arg0) {
    // TODO Auto-generated method stub

}
}

我的第一个片段

public class CopyOfFirstFragment extends Fragment implements OnTouchListener ,OnPageChangeListener{

String permanentval = "";
LinearLayout llayoutslide;
LinearLayout llayoutpassword;
int image;
TextView txtTime, txtDay, txtmissedCall, txtChargePercent,txtSMS;
ImageView imgCharge;
int charge;
Boolean flagAnimzoom;
ViewPager pchange;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View v = inflater
            .inflate(R.layout.sliding_lock_pager, container, false);

    // my all code here
            return v;
}

public static CopyOfFirstFragment newInstance(String text) {

    CopyOfFirstFragment f = new CopyOfFirstFragment();
    Bundle b = new Bundle();
    b.putString("msg", text);
    f.setArguments(b);

    return f;
}

@Override
public boolean onTouch(View v, MotionEvent event) {
    return false;
}

@Override
public void onPageScrollStateChanged(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
    // TODO Auto-generated method stub

}

@Override
public void onPageSelected(int arg0) {
    // TODO Auto-generated method stub

}


}

我的第二个片段

public class CopyOfSecondFragment extends Fragment implements OnClickListener {

    LinearLayout llayoutPasswordEnter,llayoutPasswordConfirm,llayoutPasswordPager;
    Button btnNext, btnOne, btnTwo, btnThree, btnFour, btnFive, btnSix,
            btnSeven, btnEight, btnNine, btnZero;
    TextView txtClear, txtDone;
    String store = "";
    int one = 0, two = 0;
    String permanentval = "";
    RelativeLayout rlayoutPasswordEnter;
    int image;
    private Vibrator vibrator;
    Boolean getflagvibrate=false, getflagSounds=false;
    MediaPlayer mp;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.password, container,
                false);

        // all code here
        txtDone.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                // in this button i want to move from this fragment to first means i want to display   firt xml file instead of this second one   <----- here want to move 
            }
        });

        return v;
    }
    public void setButtonSize(Button btn) {
        int width = Constant.getDeviceWidth(getActivity()) / 5;
        LayoutParams params = new LayoutParams(width, width);
        params.leftMargin = 8;
        params.rightMargin = 8;
        btn.setLayoutParams(params);
    }

    public static CopyOfSecondFragment newInstance(String text) {

        CopyOfSecondFragment f = new CopyOfSecondFragment();
        Bundle b = new Bundle();
        b.putString("msg", text);
        f.setArguments(b);
        return f;
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

    }

}

我找到我的解决方案:在我的点击中使用以下

      final FragmentTransaction ft = getFragmentManager().beginTransaction(); 
      ft.replace(R.id.details, new NewFragmentToReplace, "NewFragmentTag"); 
      ft.commit(); 

我不确定您要做什么,但是如果您尝试以编程方式更改页面,则可以使用ViewPager.setCurrentItem(int item)

您可以使用viewPager.setCurrentItem(CURRENT_FRAGMENT_TO_BE_SET)来做到这一点

您也可以这样做,将这段代码放入click方法中

       ((ViewPagerMainActivity)getActivity()).pager.setCurrentItem(0);

setCurrentItem(0)中的0是您要执行的任何活动编号

在您的CopyOfViewPagerMainActivity类上将viewpager设置为Static,然后从另一个类调用它。

例如,

CopyOfViewPagerMainActivity.pager.setCurrentItem(1);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM