evertime我使用这个代码,它说是一个nullpointer异常
public boolean onTouchEvent(MotionEvent event)
{
if(event.getAction()==MotionEvent.ACTION_UP)
{
gotoWeb interwebs=new gotoWeb();
interwebs.go();
}
return true;
}
public class gotoWeb extends Activity
{
public void go()
{
Intent ins = new Intent(Intent.ACTION_VIEW);
ins.setData(Uri.parse("http://www.google.com"));
startActivity(ins);
}
}
我似乎无法弄清楚我没有指定我几乎完成了我的项目,这似乎阻止了我
答案 0 :(得分:3)
您不能只扩展Activity
,构建它然后再使用它。阅读activity lifecycle,了解如何正确创建一个。你获得NPE的原因是你的Activity - 派生自Context--正在调用startActivity(),这是一个Context中的Context方法,由于你没有使用适当的机制来创建,所以它尚未初始化你的活动。
那就是说,我不确定你为什么要尝试构建一个Activity来启动另一个启动Web浏览器的活动。为什么不创建Intent并从onTouchEvent()中启动它?我假设Touch中存在触摸处理程序或具有Context的东西。
答案 1 :(得分:0)
这真的有点令人困惑。为什么你有一个扩展Activity但没有覆盖任何内置方法的类,比如onCreate()和onCreateView()? Activity是UI的容器以及应该与该单个屏幕一起出现的所有行为。这包括导航,需要点击处理程序的按钮等。但是,您的类不会覆盖返回膨胀的UI层次结构的最基本方法。
由于您实际上从未使用startActivity实际启动GoToWeb实例,因此无法调用任何回调,这意味着不会将任何内容绘制到屏幕上。