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

}

私は1つを持っている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にアクセスするにはどうすればよいですか。

4

4 に答える 4

0

あなたの質問にはかなりの構造がありません。EditTextに到達したい正確な場所はどこですか? なぜこれが欲しいのですか?別の設定の方が良いかもしれません。

とにかく、EditText を public static 変数にすることで、どこからでも簡単にアクセスできます。ただし、これはほとんどの場合、物事を処理するための良い方法ではありません。

于 2013-01-10T16:34:44.547 に答える
0

Got the solution

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

そしてAddValuefragment addメソッドでpublic void setText(String text) { this.addEdit = text;}

幸運を!

于 2013-01-10T17:01:28.797 に答える