读书人

空指针错误无法解决求指导

发布时间: 2012-03-31 13:13:26 作者: rapoo

空指针异常无法解决,求指导

Java code
import android.app.Activity;import android.content.Context;import android.content.Intent;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class ButtonActivity extends Activity implements OnClickListener {    Context context;    View view;    public ButtonActivity(Context context,View view){        this.context = context;        this.view = view;    }    public void initButton() {        Button barChart = (Button) view.findViewById(R.id.button1);        Button pieChart = (Button) view.findViewById(R.id.button2);        Button threadChart = (Button) view.findViewById(R.id.button3);        barChart.setOnClickListener(this);        pieChart.setOnClickListener(this);        threadChart.setOnClickListener(this);    }    @Override    public void onClick(View v) {        switch (v.getId()) {        case R.id.button1:            Intent barintent = new Intent(context,BarChartActivity.class);            barintent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);            Log.i("tag", (barintent == null)+"");            [color=#FF0000]this.startActivity(barintent);[/color]            break;        case R.id.button2:            Intent pieChart = new Intent(context,PieChartActivity.class);            pieChart.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);            this.startActivity(pieChart);            break;        case R.id.button3:            Intent threadChart = new Intent(context,ThreadChartActivity.class);            threadChart.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);            this.startActivity(threadChart);            break;        default:            break;        }            }}


如上代码,这是我定义的activity,用来专门处理button的点击事件。我的想法是,在另一个activity调用initButton方法从而实现对button的控制,即new ButtonActivity(this, findViewById(R.id.barbut)).initButton();
但是,this.startActivity(barintent);即上面红色的那一行,遇上了空指针异常,但是我用日志测试barintent时发现他不是空啊,究竟这个异常是如何引起的呢?
求指导!

[解决办法]
能在界面显示的activity都应该有相应的布局文件,你的这个activity没有//setContentView(R.layout.main);这样类似的代码,说明你的activity没有和相应的视图文件绑定。activity初始化时将进行相应的事件和视图的绑定,所以相应的事件和视图都要在同一个activity中进行声明!你没有添加视图文件,虽然可以获取相应的空间的ID,但是却无发获得相应事件!所以显示空指针异常!//个人意见,如有错误,请指正
[解决办法]
实际上楼主这个类根本没有必要去继承Activity...
按楼主的思想,只需要做一个实现OnClickListener的类来处理onClick事件.
大家都被楼主的非主流代码给弄晕了.
我认为, 问题的原因在于this.startActivity(barintent);这一句.
不要用this, 用你传入的context吧.Activity不是这样用的.


[解决办法]
探讨
引用:

new ButtonActivity(this, findViewById(R.id.barbut)).initButton();??
一个activity的启动,背后做的东西绝不是我们单纯new一个出来这么简单
activity也是类啊,实例化对象不是new么? 只不过我这个不是用来显示界面而已啊,难道一定要我用service来做么?不是……

读书人网 >Android

热点推荐