我正在尝试使用提供的url打开Web浏览器,但是,在以下代码的最后一行之后,我得到一个空指针异常。根据调用堆栈,Actvity.startActvitity(Intent)
是异常发生的地方。此代码位于主活动的子视图的自定义控制器类中。关于如何通过代码正确启动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 );
}
答案 0 :(得分: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 :(得分:1)
这不起作用:您无法以您尝试的方式实例化Activity(Activity webactivity = new Activity();
将返回Android框架未正确设置的类,因此空指针异常)。 / p>
你必须将原始的Activity传递给函数:类似这样的东西:
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 );
}