我有一个定义为
的片段public class AddValue extends Fragment
{
private int position;
public EditText addEdit;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Log.e("Test", "hello");
position = getArguments().getInt("position");
}
/**
* Handle the results from the voice recognition activity.
*/
@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.add_value, container, false);
addEdit = (EditText) view.findViewById(R.id.editBox);
if (position == 0)
addEdit.setHint("Patient Id");
if (position == 1)
addEdit.setHint("Age");
if (position == 2)
addEdit.setHint("Height In Inches");
if (position == 3)
addEdit.setHint("Weight in lbs");
if (position == 4)
addEdit.setHint("LA Volume Index");
return view;
}
}
我有一个MainActivity extends FragmentActivity
现在我正在使用这个
FragAdapter myAdapter = (FragAdapter) mPager.getAdapter();
AddValue screen = (AddValue) myAdapter.getItem(myPosition);
EditText box = (EditText) screen.getView().findViewById(R.id.editBox);
public class FragAdapter extends FragmentPagerAdapter
{
public FragAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public int getCount()
{
return 5;
}
@Override
public Fragment getItem(int position)
{
AddValue val = new AddValue();
Fragment frag = val;
Bundle arg = new Bundle();
arg.putInt("position", position);
frag.setArguments(arg);
return frag;
}
}
如何从主要活动中访问EditText。
答案 0 :(得分:0)
你的问题缺乏相当多的结构。你想在哪里到达EditText?你为什么要这个?也许一个不同的设置会更好。
无论如何,您可以将EditText设置为公共静态变量,以便从任何地方轻松访问它。在大多数情况下,这不是处理事情的好方法。
答案 1 :(得分:0)
如果您的AddValue
片段是从xml实例化的,那么您可以这样:
在onActivityResult中添加以下内容:
AddValue fragment = getSupportFragmentManager().findFragmentById(R.id.host_fragment)
host_fragment
是来自xml的片段的id。
if(fragment != null){
fragment.setText(textFromSpeech);
}
在AddValue
片段中添加方法public void setText(String text) { this.addEdit = text;}
答案 2 :(得分:0)
得到了解决方案
EditText text = (EditText) mPager.getChildAt(myPosition).findViewById(R.id.editBox);
text.setText(matches.get(0));
答案 3 :(得分:0)
您可以使用Fragment类的getView方法进行访问。
例如,您的MyFragment中有一个TextView,其ID为" text_view"
在你的活动中制作你的片段:
MyFragment myFragment = new MyFragment();
当你需要一个孩子时,只需调用getView然后找到你的childView。
View view = myFragment.getView();
if (view !=null) {
view.findViewById(R.id.text_view).setText("Child Accessed :D");
}