当我尝试访问互联网时崩溃

时间:2012-02-03 02:38:46

标签: android debugging

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);
  }
}

我似乎无法弄清楚我没有指定我几乎完成了我的项目,这似乎阻止了我

2 个答案:

答案 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实例,因此无法调用任何回调,这意味着不会将任何内容绘制到屏幕上。