gpt4 book ai didi

android - 获取不同 fragment 的 EditText 值

转载 作者:行者123 更新时间:2023-11-29 01:44:58 27 4
gpt4 key购买 nike

我正在尝试从不同 fragment 的 editTexts 获取一些文本。所以我首先要做的是定义我的 mPagermPagerAdapter:

a_Atenuacion active

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 个 fragment 类(第一个和第二个布局都有一个 editText,但是第三个有一个 editText 和一个 button).按钮功能是,当我在最后一个 fragment (fragment3) 中时,它采用信息形式(不同的 editTexts)并发送到另一个 Activity 。

a_Dat_Inicio1 fragment

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 fragment

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;
}
}

最后我得到了另一个 Activity (Prueba1.class) 的 bundle ,奇怪的是我只得到了 editText1 的结果(在第一个 fragment 上),其余的都是空的。

有人可以帮我吗?

提前致谢。

最佳答案

最后我得到了一个接口(interface),这是我认为在已经定义的 fragment 上获得东西的唯一方法。

我的代码是这样的:

首先定义一个接口(interface)

public interface OnEditTextChanged {

public void onEditPressed1(String edit1);

public void onEditPressed2(String edit1);

public void onEditPressed3(String edit1);

然后 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);

}
});

最后在我们的主要 Activity 中,调用方法:

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();
}
}

希望这对某人有帮助!!!

无论如何谢谢!!!

关于android - 获取不同 fragment 的 EditText 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22027107/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com