получить вход от фрагментов - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть ViewPager с 3 фрагментами, и я получаю входные данные из полей каждого фрагмента, когда нажимается следующая кнопка, но я не могу найти способ получить ввод, когда пользователь прокручивает фрагменты, кто-нибудь может мне помочь!

это код в моем первом фрагменте:

    public class signupfrag1 extends Fragment {
    private TextInputEditText fName, lName;
    public Spinner spncountry, spncity;
    private Button next1;
    private String vfName, vlName, vcountry, vcity;
    private String method;
    signupfrag1Listener activityCommander;

    public interface signupfrag1Listener{
        public void getDataFromFrag1(String fName, String lName, String countryName, String cityName);
    }

   @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        try{
            activityCommander = (signupfrag1Listener) context;
        }catch (ClassCastException e){
            throw new ClassCastException(context.toString());
        }

    }
@Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
     View view = inflater.inflate(R.layout.signupfrag1, container, false);
     fName = (TextInputEditText) view.findViewById(R.id.edtFName);
     lName = (TextInputEditText) view.findViewById(R.id.edtLName);
     spncountry = (Spinner) view.findViewById(R.id.cmbCountry);
     spncity = (Spinner) view.findViewById(R.id.cmbCities);
     next1 = (Button) view.findViewById(R.id.btnNext2);

next1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
             vfName = fName.getText().toString();
             vlName = lName.getText().toString();

             if(vfName.equals("") || vfName.length()==1){
                 fName.setError("please enter a correct first name!");
             }
             else if(vlName.equals("") || vlName.length()==1){
                 lName.setError("Please enter a correct first name!");
             }
             else
                startFrag2(view);
         }
     });}

public void startFrag2(View view){
            activityCommander.getDataFromFrag1(vfName, vlName, vcity, vcountry);

        }

это код из моей основной деятельности:

public class Main2Activityforfragments extends AppCompatActivity implements signupfrag1.signupfrag1Listener, signupfrag2.signupfrag2Listener {
    private ViewPager fragsViewPager;
    private SectionsPagerAdapter1 sectionsPagerAdapter1;


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

fragsViewPager = (ViewPager) findViewById(R.id.fragsViewPager);
    sectionsPagerAdapter1 = new SectionsPagerAdapter1(getSupportFragmentManager());
    fragsViewPager.setAdapter(sectionsPagerAdapter1);


}


//this get called when the next button is clicked
@Override
public void getDataFromFrag1(String fName, String lName, String cityName, String countryName) {
    if(fragsViewPager.getCurrentItem() == 0){
        fragsViewPager.setCurrentItem(1);}

}

1 Ответ

0 голосов
/ 28 апреля 2018

если вы в первом фрагменте, то создайте ref. интерфейса и вызовите его метод и передайте значения Click, что вы хотите, и это необходимо для реализации Two интерфейса в SecondFragment. вызовите его метод в первом фрагменте. Вы можете создать интерфейс Two в SecondFragment

Two Second=new SecondFragment();  // it will be called on click of firstFragment which pass the value.
Second.two("Value one","Value two");

interface Two{
void two(String value,String value);   // implement this inteface in SecondFragment and call it in FirstFragment
}

Когда вы достигнете секунды, вы получите значение из первого фрагмента и продолжите работу с третьим фрагментом так же.

...