Как получить доступ к моей кнопке на одной из страниц моего просмотра?

Я новичок в этом андроиде и java.

Теперь мой просмотрщик может перемещать весь мой xml-макет, но я не знаю, как получить доступ к элементу в них.

Я попытался использовать Button mybutton = (Button) findViewById (R.layout.result) , а затем установить onClickListener в mybutton, но затем он был вынужден закрываться каждый раз, когда я его запускал.

Вот мой код:

 public class main extends Activity { private ViewPager myviewpager; private ViewPagerAdapter myviewpageradapter; private static int NUM_AWESOME_VIEWS = 12; Button button_1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); myviewpageradapter = new ViewPagerAdapter(); myviewpager = (ViewPager) findViewById(R.id.myviewpager); myviewpager.setAdapter(myviewpageradapter); button_1 = (Button) myviewpager.findViewById(R.id.first_button); button_1.setOnClickListener(new OnClickListener() { public void onClick(View v) { finish(); } }); } private class ViewPagerAdapter extends PagerAdapter { @Override public int getCount() { return NUM_AWESOME_VIEWS; } @Override public Object instantiateItem(View collection, int position) { LayoutInflater layoutinflater = getLayoutInflater(); View view; view = layoutinflater.inflate(R.layout.page1, null); switch (position) { case 0 : view = layoutinflater.inflate(R.layout.page1, null); break; case 1 : view = layoutinflater.inflate(R.layout.page2, null); break; case 2 : view = layoutinflater.inflate(R.layout.page3, null); break; case 3 : view = layoutinflater.inflate(R.layout.page4, null); break; case 4 : view = layoutinflater.inflate(R.layout.page5, null); break; case 5 : view = layoutinflater.inflate(R.layout.page6, null); break; case 6 : view = layoutinflater.inflate(R.layout.page7, null); break; case 7 : view = layoutinflater.inflate(R.layout.page8, null); break; case 8 : view = layoutinflater.inflate(R.layout.page9, null); break; case 9 : view = layoutinflater.inflate(R.layout.page10, null); break; case 10 : view = layoutinflater.inflate(R.layout.page11, null); break; case 11 : view = layoutinflater.inflate(R.layout.result, null);break; } ((ViewPager) collection).addView(view,0); return view; } @Override public void destroyItem(View collection, int position, Object view) { ((ViewPager) collection).removeView((View) view); } @Override public boolean isViewFromObject(View view, Object object) { return view==((View)object); } @Override public void finishUpdate(View arg0) {} @Override public void restoreState(Parcelable arg0, ClassLoader arg1) {} @Override public Parcelable saveState() { return null; } @Override public void startUpdate(View arg0) {} } 

Это может быть просто проблема, что ваши предметы не найдены, вероятно, так попробуйте это (если ваше представление не LinearLayout меняет его)

 LayoutInflater getView = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); LinearLayout view1 =(LineaLayout)getView.inflate(R.layout.your_view,null); 

Но ваша кнопка может выбросить Exception, кроме того, для нее установлен onClickListener. Если это просто кнопка, определите ее в XML:

 android:onClick"buttonClick" 

Затем в коде

 public void buttonClick(View v){ // do something } 

Если это невозможно, потому что вам нужно позже ссылаться на кнопку, я придерживался той же проблемы и хотел бы знать, как она работает.

Я думаю, проблема в том, что вы пытаетесь найти представление (findViewById), которое еще не было установлено (завышено). Попробуйте установить прослушиватель кнопок внутри метода instatiateItem типа ViewPagerAdapter.

Пример:

  switch(position){ case 0 : view = layoutinflater.inflate(R.layout.page1, null); button_1 = (Button) view.findViewById(R.id.first_button); button_1.setOnClickListener(new OnClickListener() { public void onClick(View v) { finish(); } }); break; (...) }