3

viewPager があり、2 ページ目にボタンがあります。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. onClickListenerbtn.setOnClickListener(this)を実装しない限り、これを行うことはできません。ViewPagerProjectActivityしたがって、それを実装するか、以下のコードを使用することができます。

このコードを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);
于 2012-02-14T15:11:37.560 に答える