2013-01-10 166 views
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; 
     } 

    } 

如何从访问的EditText我的主要活动。

回答

0

你的问题缺乏一些结构。你到底想要达到EditText的位置?你为什么要这样?也许不同的设置会更好。

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

+0

我想在一些地方设置文本在EDITTEXT,但是我得到空指针在ragAdapter myAdapter =(FragAdapter)mPager.getAdapter(); AddValue screen =(AddValue)myAdapter.getItem(myPosition); EditText box =(EditText)screen.getView()。findViewById(R.id.editBox); –

+0

我做语音识别,其onActivityResult我在的EditText –

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

祝你好运!

0

得到了解决

EditText text = (EditText) mPager.getChildAt(myPosition).findViewById(R.id.editBox); 
     text.setText(matches.get(0)); 
+0

文字不论其记录应该已经从一开始更明确的设置。很高兴你找到了解决方案。 – vchelbanster

0

你可以用片段类的getView方法来访问。

例如你在你与“text_view”
在你的活动ID MyFragment一个TextView让你的一个片段:

MyFragment myFragment = new MyFragment(); 

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

View view = myFragment.getView(); 
if (view !=null) { 
view.findViewById(R.id.text_view).setText("Child Accessed :D"); 
}