2012-02-01 82 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 
} 
);