2013-01-10 204 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"); 
}