2 o casper ne O_Casper_ne 于 2012.12.24 17:38 提问

Button onClick事件不能运行

我创建一个viewPager,在每一个页面上有三个布局。在第二个页面上我想处理按钮事件,当点击按钮时背景颜色会变。但是现在我的代码不能运行。去掉button代码,viewPager就可以正常运行。
这是我的代码:

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)

4个回答

LiDaming_and
LiDaming_and   2012.12.25 15:02
已采纳

试一下以下的三行代码:

View deneme2lout = (View) getView.inflate(R.layout.deneme2,null);
btn = (Button) deneme2lout.findViewById(R.id.button1);
btn.setOnClickListener(this);
qingqing_benniu
qingqing_benniu   2012.12.25 14:33

你可以用imagebutton控件来实现背景图片的改变的啊...

suannai0314
suannai0314 详细的回答更能得到用户的青睐,而且更容易被采纳哦
4 年多之前 回复
baimy1985
baimy1985   2012.12.24 20:34

java.lang.ClassCastException: 这个异常是哪个类型不匹配啊,在你贴出来的代码里没找到,可不可以单步调试一下看下现场应该可以定位是哪行代码错了

nana4ever
nana4ever   2013.01.08 13:44

使用下面的代码试试:

 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));
            }
        });
    }
Csdn user default icon
上传中...
上传图片
插入图片