Кнопка onClick в viewPager? - PullRequest
       25

Кнопка onClick в viewPager?

3 голосов
/ 14 февраля 2012

У меня есть ViewPager, и на второй странице у меня есть кнопка. Я хочу, чтобы он что-то делал на клике, но он этого не делает.

Я сделал на XML-файле: андроид: OnClick = "ButtonClick"

А также я попробовал setOnClickListener как внутри, так и снаружи onCreat ...

Ничего из этого не получилось ...

Мой viewPagerAdapter работает отлично! Я могу видеть страницы и переключаться между ними. Но я просто не могу заставить кнопку сделать что-нибудь. Это может быть сделано в адаптере, но я сделаю много вещей, так что это не будет полезно ...

Любая помощь приветствуется.

Вот код:

public class ViewPagerProjectActivity extends Activity {

Button btn;
AbsoluteLayout l;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ViewPagerAdapter adapter = new ViewPagerAdapter( this );
    ViewPager pager = (ViewPager)findViewById( R.id.viewpager );
    pager.setAdapter( adapter );
    pager.setCurrentItem(0);        

}   

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

    l = (AbsoluteLayout) findViewById(R.id.layout2);
    btn = (Button) l.findViewById(R.id.button1);
    // btn.setOnClickListener(this);        
}

public void buttonClick(View v) {
    if(v.equals(btn)) {                 
        l.setBackgroundDrawable(getResources().getDrawable(R.drawable.background));
    }
}

}

1 Ответ

2 голосов
/ 14 февраля 2012

Я вижу несколько проблем с вашим кодом:

  1. Вы не должны ничего делать в onSaveInstanceState, кроме ... сохранения состояния. onSaveInstanceState вызывается только тогда, когда действие должно быть приостановлено; он не будет вызываться до тех пор, поэтому подключение слушателя к нему ничего не изменит. (
  2. Вы не можете сделать btn.setOnClickListener(this), если ваш ViewPagerProjectActivity не реализует onClickListener. Таким образом, вы можете реализовать это или просто использовать приведенный ниже код.

Переместить этот код в onCreate после setContentView(R.layout.main):

Button btn = (Button) findViewById(R.id.button1);

OnClickListener listener = new OnClickListener(){

@Override
public void onClick(View v) {
    v.setBackgroundDrawable(getResources().getDrawable(R.drawable.background));
}};
if (btn != null)
    btn.setOnClickListener(listener);
...