2011-08-01 128 views
0

我试图用提供的URL打开Web浏览器,但是,在下面的代码的最后一行后,我得到一个空指针异常。根据调用堆栈,Actvity.startActvitity(Intent)是发生异常的地方。此代码位于主活动的子视图的自定义控制器类中。关于如何通过代码正确启动Web浏览器的任何想法,理想情况下来自主要活动之外,因为我会尽可能重用。或者至少将我指向正确的方向。Android:从代码启动Web浏览器

private void showWebSite() { 
      String _url = (String) this.urlview.getText(); 
      Activity webactivity = new Activity(); 
      Intent webIntent = new Intent(Intent.ACTION_VIEW); 
      webIntent.setData(Uri.parse(_url)); 
      webactivity.startActivity(webIntent); 
    } 

回答

3
private void showWebSite() { 
     String _url = (String) this.urlview.getText(); 
     //Activity webactivity = new Activity(); Not required 
     Intent webIntent = new Intent(Intent.ACTION_VIEW); 
     webIntent.setData(Uri.parse(_url)); 
     this.startActivity(webIntent); 
} 

如果你希望它是可重复使用的创建这样

public static void showWebSite(Activity activity, String url) { 

     Intent webIntent = new Intent(Intent.ACTION_VIEW); 
     webIntent.setData(Uri.parse(url)); 
     activity.startActivity(webIntent); 
} 

/* Call from your activities like this */ 

CLASSNAME.showWebSite(this, (String) this.urlview.getText()); 
1

一个静态方法这是行不通的:你不能实例化一个活动,你已经尝试的方式(Activity webactivity = new Activity();将返回一个由Android框架没有正确设置的类,因此空指针异常)。

你将不得不在原有活动的功能经过:事情是这样的:

private void showWebSite(Activity webactivity) { 
      String _url = (String) this.urlview.getText(); 
      Intent webIntent = new Intent(Intent.ACTION_VIEW); 
      webIntent.setData(Uri.parse(_url)); 
      webactivity.startActivity(webIntent); 
    }