3

我有一个viewPager,在第二页我有一个按钮。我希望它在 onClick 上做一些事情,但它没有做。

我已经完成了 xml 文件:android:onClick="buttonClick"

而且我在 onCreat 内外都尝试过 setOnClickListener ...

这些都没有解决...

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

}

4

1 回答 1

2

我发现您的代码存在一些问题:

  1. onSaveInstanceState除了...保存状态之外,您不应该做任何事情。onSaveInstanceState仅在活动即将暂停时调用;在那之前它不会被调用,因此在其中附加一个监听器不会做任何事情。:(
  2. btn.setOnClickListener(this)除非您ViewPagerProjectActivity实现 onClickListener ,否则您无法做到。所以你可以实现它,或者只使用下面的代码。

将此代码移到onCreateafter 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);
于 2012-02-14T15:11:37.560 回答