空指针异常无法解决,求指导
- 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不是这样用的.
[解决办法]