获得不同片段的EditText值 [英] Get EditText value on different fragment

查看:103
本文介绍了获得不同片段的EditText值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从不同的片段editTexts一些文字。因此,我首先要做的是定义我的mPager和mPagerAdapter:

I am trying to get some text from editTexts on different fragments. So what I do first is define my mPager and mPagerAdapter:

public class a_Atenuacion extends FragmentActivity{

private static final int NUM_PAGES = 3;
/**
 * The pager widget, which handles animation and allows swiping horizontally to access previous
 * and next wizard steps.
 */
private ViewPager mPager;

/**
 * The pager adapter, which provides the pages to the view pager widget.
 */
private PagerAdapter mPagerAdapter;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.a_dat_viewpager);

    // Instantiate a ViewPager and a PagerAdapter.
    mPager = (ViewPager) findViewById(R.id.pager);
    mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
    mPager.setAdapter(mPagerAdapter);


}
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
    public ScreenSlidePagerAdapter(FragmentManager fm) {
        super(fm);
    }
    @Override
    public Fragment getItem(int position) {
        switch(position){
            case 0:
                return new a_Dat_Inicio1();
            case 1:
                return new a_Dat_Inicio2();
            case 2:
                return new a_Dat_Inicio3();
        }
        return null;
    }
    @Override
    public int getCount() {
        return NUM_PAGES;
    }
}

}

然后,我让我的3个片段班(两个第一和第二的布局有一个EditText,但第三人有一个EditText和一个按钮)。该按钮的功能是,当我在最后一个片段(frament3)它需要信息的形式(不同editTexts),发送给其他活动。

Then I get my 3 fragments classes (Both 1st and 2nd layouts have an editText, but the 3rd one has an editText and a button). The button function is that when I am in the last fragment (frament3) it take info form (different editTexts) and send to another activity.

public class a_Dat_Inicio1 extends Fragment {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.e("Test", "hello");
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

}

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

    return view;   }}

公共类a_Dat_Inicio3扩展片段{

public class a_Dat_Inicio3 extends Fragment {

EditText edit3;
EditText edit2;
EditText edit1;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.e("Test", "hello");
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

}

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


    edit1 = (EditText)getActivity().findViewById(R.id.editText1);
    final String edit11 = edit1.getText().toString();
    edit2 = (EditText)getActivity().findViewById(R.id.editText2);
    final String edit22 = edit2.getText().toString();
    edit3 = (EditText)view.findViewById(R.id.editText3);
    final String edit33 = edit3.getText().toString();

    Button but=(Button) view.findViewById(R.id.button);

    but.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v) {

            //Creamos el bundle
            Bundle bundle = new Bundle();
            //Le ponemos la variable parametro con el contenido (key, valor)
            bundle.putString("edit3", edit33);
            bundle.putString("edit2", edit22);
            bundle.putString("edit1", edit11);
            Intent net= new Intent(v.getContext(),Prueba1.class);
            net.putExtras(bundle);
            startActivity(net);

        }
    });

    return view;
}

}

最后,我拿到捆绑的另一个活动(Prueba1.class),并很好奇,我只能得到结果的editText1(1日片段)和其余均为空。

Finally I get bundle on another activity (Prueba1.class) and it is curious that I only get result for editText1 (on 1st fragment) and rest are null.

任何人都可以给我一个帮助?

Can anybody give me a help?

在此先感谢。

推荐答案

终于,我得到了一个接口,这是我认为让soemthing上已定义片段的唯一途径。

finally I get over an interface, that is the only way I think to get soemthing on already defined fragments.

我的code得到这样的:

My code get like this:

1日定义一个接口

public interface OnEditTextChanged {

public void onEditPressed1(String edit1);

public void onEditPressed2(String edit1);

public void onEditPressed3(String edit1);

然后片段活动:

Then fragment activity:

public class a_Dat_Inicio1 extends Fragment {

EditText edit;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.e("Test", "hello");
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

}

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

    return view;
}

OnEditTextChanged editListener;
@Override
public void onAttach(Activity activity){
    super.onAttach(activity);
    try{
        editListener=(OnEditTextChanged) getActivity();
    }catch(ClassCastException e){
        throw new ClassCastException(activity.toString()+"must implemnt onEditPressed");
    }
}

private void init(View view) {
    edit=(EditText) view.findViewById(R.id.editText1);

    //cada vez que se modifique texto llamar
    edit.addTextChangedListener(new TextWatcher() {

        @Override
        public void afterTextChanged(Editable s) {
            final String edit11 = edit.getText().toString();
            editListener.onEditPressed1(edit11);

        }
    });

最后我们的主要活动,调用方法:

And finally on our main activity, call the method:

public class a_Atenuacion extends FragmentActivity implements OnEditTextChanged {

String dat1;
String dat2;
String dat3;

private static final int NUM_PAGES = 3;
private PagerAdapter mPagerAdapter;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.a_1dat_viewpager);

    // Instantiate a ViewPager and a PagerAdapter.
    mPager = (ViewPager) findViewById(R.id.pager);
    mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
    mPager.setAdapter(mPagerAdapter);


    //HERE DO WHATEVER YOU WANT WITH THE DATA CAUGTH ON THE EDIT 1 METHOD


}


@Override
public void onEditPressed1(String edit1) {

    if(mPager.getCurrentItem()==0){
        dat1=edit1;
        Toast bread = Toast.makeText(getApplicationContext(), "edit1", Toast.LENGTH_LONG);
        bread.show();
    }
}

希望这帮助别人!

HOPE this help someone!!!

在任何方式感谢!

这篇关于获得不同片段的EditText值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆