2012-04-21 4 views
0

私はフラグメントコンテナと、そのフラグメントのコンテンツとやり取りするフラグメントの外にあるいくつかのボタンを持っています。ボタンをクリックすると、テキスト要素内の情報を取得する必要があります。これは私が今持っているものですが、うまくいきません。 コードは、フラグメントページャのデモに由来しています。Android:OnClickListenerの要素を表示するためのアクセスを取得する

Button bm = (Button) findViewById(R.id.bm); 
bm.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
    EditText editTextIn1 = (EditText) v.findViewById(R.id.editTextIn1); 
    } 
}); 

編集 私はこのサンプルを使用します。

http://developer.android.com/reference/android/support/v13/app/FragmentStatePagerAdapter.html 

public class FragmentStatePagerSupport extends FragmentActivity { 
    static final int NUM_ITEMS = 10; 

    MyAdapter mAdapter; 

    ViewPager mPager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.fragment_pager); 

     mAdapter = new MyAdapter(getSupportFragmentManager()); 

     mPager = (ViewPager)findViewById(R.id.pager); 
     mPager.setAdapter(mAdapter); 

     // Watch for button clicks. 
     Button button = (Button)findViewById(R.id.goto_first); 
     button.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       mPager.setCurrentItem(0); 
      } 
     }); 
     button = (Button)findViewById(R.id.goto_last); 
     button.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       mPager.setCurrentItem(NUM_ITEMS-1); 
      } 
     }); 
    } 

    public static class MyAdapter extends FragmentStatePagerAdapter { 
     public MyAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public int getCount() { 
      return NUM_ITEMS; 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return ArrayListFragment.newInstance(position); 
     } 
    } 

    public static class ArrayListFragment extends ListFragment { 
     int mNum; 

     /** 
     * Create a new instance of CountingFragment, providing "num" 
     * as an argument. 
     */ 
     static ArrayListFragment newInstance(int num) { 
      ArrayListFragment f = new ArrayListFragment(); 

      // Supply num input as an argument. 
      Bundle args = new Bundle(); 
      args.putInt("num", num); 
      f.setArguments(args); 

      return f; 
     } 

     /** 
     * When creating, retrieve this instance's number from its arguments. 
     */ 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      mNum = getArguments() != null ? getArguments().getInt("num") : 1; 
     } 

     /** 
     * The Fragment's UI is just a simple text view showing its 
     * instance number. 
     */ 
     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      View v = inflater.inflate(R.layout.fragment_pager_list, container, false); 
      View tv = v.findViewById(R.id.text); 
      ((TextView)tv).setText("Fragment #" + mNum); 
      return v; 
     } 

     @Override 
     public void onActivityCreated(Bundle savedInstanceState) { 
      super.onActivityCreated(savedInstanceState); 
      setListAdapter(new ArrayAdapter<String>(getActivity(), 
        android.R.layout.simple_list_item_1, Cheeses.sCheeseStrings)); 
     } 

     @Override 
     public void onListItemClick(ListView l, View v, int position, long id) { 
      Log.i("FragmentList", "Item clicked: " + id); 
     } 
    } 
} 
+0

あなたは「テキスト要素」とは何ですか?例えば –

+0

ありがとうございます。それはより良くなりますが、私はまだ問題があります。私は要素を前もってロードするこのフラグメントのものを持っています。したがって、editTextIn1は表示されているもの以外のものを指しています。上記のコードサンプルの正しいビューコンテキストを取得するにはどうすればよいですか? – user1324936

答えて

6

あなたonCLickListenerでvはボタン自体を参照すると、ボタンの上にfindViewByIDを呼び出すと、ボタンが(その子を見ていることを意味していることdoes notはEditText要素を見つけるために何も持っていません)。このコードは、アクティビティで実行されている場合、あなたが行うことができるかもしれません:あなたが行うことができ、

Button bm = (Button) findViewById(R.id.bm); 
bm.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
    EditText editTextIn1 = (EditText) findViewById(R.id.editTextIn1); 
    } 
}); 

交互に、あなたは(でframeLayoutか何かのような)フラグメントのコンテナへの参照を持っている場合

Button bm = (Button) findViewById(R.id.bm); 
bm.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
    EditText editTextIn1 = (EditText) myFragmentContainer.findViewById(R.id.editTextIn1); 
    } 
}); 
+0

内にあるEditTextのeditTextIn1を – user1324936

+0

私はこの魂を見つけました – user1324936

関連する問題