2012-02-01 105 views
4

我做了一個viewPager,每個頁面上有三個佈局...我想處理第二個頁面上的按鈕,但不知何故我不能...(PS:沒有按鈕代碼,我的viewPager作品),我只是單純地試圖改變背景點擊時...Button onClick不起作用

這裏是我的代碼:

public class ViewPagerProjectActivity extends Activity implements OnClickListener{ 

Button btn; 

@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); 


} 


public void OnClick(View v) { 
    if(v.equals(btn)) { 
    LinearLayout l = (LinearLayout) findViewById(R.id.deneme2); 
      l.setBackgroundDrawable(getResources().getDrawable(R.drawable.background)); 
    }  
}  
} 

和這裏的錯誤:

E/AndroidRuntime(273): FATAL EXCEPTION: main 
E/AndroidRuntime(273): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.yahya.ViewPagerProject/com.yahya.ViewPagerProject.ViewPagerProjectActivity}: java.lang.ClassCastException: com.yahya.ViewPagerProject.ViewPagerProjectActivity 
E/AndroidRuntime(273): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
E/AndroidRuntime(273): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
E/AndroidRuntime(273): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
+0

什麼是您的ViewPager的佈局文件? – Jivings 2012-02-01 13:05:56

+0

在每個佈局上還有其他的東西......第二個只有一個按鈕,我想要點擊。 – yahya 2012-02-01 13:07:11

+0

行號是什麼?並可能你應該使它像LinearLayout l =(LinearLayout)ViewPagerProjectActivity.this.findViewById(R.id.layout1); – Hiral 2012-02-01 13:13:22

回答

10

嘗試這些行,我希望它的工作原理...

View deneme2lout = (View) getView.inflate(R.layout.deneme2,null); 
btn = (Button) deneme2lout.findViewById(R.id.button1); 
btn.setOnClickListener(this); 
1
> btn.setOnClickListener((OnClickListener) this); 

這不起作用,因爲ViewPagerProjectActivity不具備所需的

implements OnClickListener接口

+0

你是對的,我只是忘了它......但現在它已經完成,編譯器給我一個NullPointerException erron在這行「btn。setOnClickListener(this);「但是爲什麼?:/ – yahya 2012-02-01 13:15:56

1

嘗試

public class ViewPagerProjectActivity extends Activity implements OnClickListener 

then btn.setOnClickListener(this); 
2

嘗試使用:

public class ViewPagerProjectActivity extends Activity { 

Button btn; 

@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); 

    LinearLayout l = (LinearLayout) findViewById(R.id.layout1); 
    btn = (Button) findViewById(R.id.button1);  
    btn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) {    

      l.setBackgroundDrawable(getResources().getDrawable(R.drawable.background)); 
     } 
    }); 
} 
+0

現在編譯器給我一個NullPointerException錯誤在這行」btn.setOnClickListener(...);「 – yahya 2012-02-01 13:23:03

+0

你完成或仍然收到任何錯誤? – Hiral 2012-02-01 13:26:10

+0

我收到仍然NullPointerException ...我不明白爲什麼?:/ – yahya 2012-02-01 13:29:02

0

即使我遇到這類問題時,我添加自定義UI元素到XML文件..

我剛剛從Xml文件中移除了該特定項目並構建該項目並再次恢復該文件。問題解決了。看起來很瘋狂......但只是嘗試一次。

+0

不適合我:/ – yahya 2012-02-01 17:43:11

0

當你試圖處理一個按鈕的點擊,你有兩個選擇

  1. 在XML佈局文件中設置的android:的onClick像「myButtonClick」。然後在您的相關Activity .java文件中使用此佈局的方法有一個方法public void myButtonClick(View v)。然後把你的邏輯放在那裏。
  2. 在你的onCreate()把

    btn = (Button) findViewById(R.id.button1); 
    btn.setOnClickListener(new OnClickListener() { 
    
        @Override 
        public void onClick(View arg0) {    
    
        //Your logic here 
        } 
    }); 
    
0

我認爲這將幫助你..

使用按鈕,機器人......

映射XML按鈕文件與按鈕在Java類文件爲...

Button bt=(Button)findViewById(R.layout.button_id_in_your_xml); 

下一個..請按照以下方式調用按鈕bt的onclickListener ..

bt.setOnClickListener(new View.onClickListener(){ 

public void onClick(View arg0) { 

    //write what you want to do when you click the button 
} 
);