0

我有一个片段定义为

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

    }

如何从我的 mainactivity 访问 EditText。

4

4 回答 4

0

得到了解决方案

 EditText text = (EditText) mPager.getChildAt(myPosition).findViewById(R.id.editBox);
         text.setText(matches.get(0));
于 2013-01-10T17:12:29.373 回答
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;}

祝你好运!

于 2013-01-10T17:01:28.797 回答
0

你的问题缺乏一些结构。您究竟想在哪里到达 EditText?你为什么要这个?也许不同的设置会更好。

无论如何,您可以使 EditText 成为一个公共静态变量,以便从任何地方轻松访问它。在大多数情况下,这不是处理事情的好方法。

于 2013-01-10T16:34:44.547 回答
0

您可以使用 Fragment 类的 getView 方法访问。

例如,您的 MyFragment 中有一个 TextView,ID 为“text_view”
在您的 Activity 中制作您的片段:

MyFragment myFragment = new MyFragment();

当您需要一个孩子时,只需调用 getView,然后找到您的 childView。

View view = myFragment.getView();
if (view !=null) {
view.findViewById(R.id.text_view).setText("Child Accessed :D");
}
于 2015-03-28T17:03:20.090 回答