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)+"");
this.startActivity(barintent);
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时发现他不是空啊,究竟这个异常是如何引起的呢?
求指导!
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)+"");
this.startActivity(barintent);
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的启动,背后做的东西绝不是我们单纯new一个出来这么简单
按楼主的思想,只需要做一个实现OnClickListener的类来处理onClick事件.
大家都被楼主的非主流代码给弄晕了.
我认为, 问题的原因在于this.startActivity(barintent);这一句.
不要用this, 用你传入的context吧.Activity不是这样用的.