2011-08-01 15 views
0

提供されたURLでWebブラウザを開こうとしていますが、次のコードの最後の行の後にnullポインタ例外が発生します。コールスタックによれば、例外が発生する場所は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フレームワークによって正しく設定されていないクラス(nullポインタ例外)を返します。

あなたが関数に元のアクティビティに渡す必要があります。このような何か:

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); 
    } 
関連する問題