2011-08-01 171 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); 
    }