2012-02-14 139 views
3

我有一個viewPager,並在第二頁我有一個按鈕。我希望它在Click上做些事情,但它沒有做到。按鈕onClick在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)); 
    } 
} 

}

回答

2

我看到了一些問題與您的代碼:

  1. 你不應該在onSaveInstanceState除了...節能狀態做任何事情。僅在活動即將被暫停時調用onSaveInstanceState;直到那時它纔會被調用,因此附加一個監聽器就不會做任何事情。 :(
  2. 你不能這樣做btn.setOnClickListener(this)除非你ViewPagerProjectActivity工具onClickListener所以,你可以實現一個,或者只是使用下面的代碼

移動這個代碼到onCreatesetContentView(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); 
+0

你是對的...我犯了一個錯誤,它應該是「onWindowFocusChanged」而不是「onSaveInstanceState」...現在它工作:)順便說一下,它與你說的方式一樣崩潰...... – yahya 2012-02-14 16:24:03