2017-04-06 15 views
1

OK、私は最も簡単なアンドロイドスタジオアプリケーションを持っています。私はAndroidやJavaの開発者ではありません。Android;ランタイム中に「アプリケーションが予期せず停止しました」というメッセージが表示される

私はオンラインで検索しましたが、私はマニフェストの活動を宣言するための古い投稿を取得しました。

私は3つのアクティビティを持っています。

  1. スプラッシュスクリーンは素晴らしいです。
  2. WEMProject、素晴らしい実行します。
  3. NoNetworkConnections、実行時に "アプリケーションが予期せず停止しました"

私のWEMProjectでは、ネットワーク接続がある場合はWebviewを読み込みます。そうでない場合は、「ネットワークがありません」という画面が表示されます。

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    if (haveNetworkConnection()) { 
     setContentView(R.layout.activity_wemproject); 
     myWebView = (WebView) findViewById(R.id.WebView); 

     myWebView.getSettings().setLoadsImagesAutomatically(true); 
     myWebView.getSettings().setJavaScriptEnabled(false); 
     myWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
     myWebView.loadUrl("https://my.wem.io"); 
    } else { 
     Intent intent = new Intent(WEMProject.this, NoNetworkConnection.class); 
     startActivity(intent); 
    } 
} 

これは素晴らしい作品、ネットワークのチェックが正常に動作しますが、ないネットワークが存在しない場合:

 Intent intent = new Intent(this, NoNetworkConnection.class); 
     startActivity(intent); 

一部はなぜ..エラーの原因は?

活動は次のとおりです。

public class NoNetworkConnection extends AppCompatActivity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_no_network_connection); 
} } 

私は私のAndroidManifest.xml

<activity 
     android:name=".NoNetworkConnection" 
     android:parentActivityName=".WEMProject" 
     android:configChanges="orientation|keyboardHidden|screenSize" 
     android:label="@string/title_activity_no_network_connection" 
     android:theme="@style/FullscreenTheme"> 
    </activity> 

アンドロイドログのデバッグ一部の活動を宣言した:要求されたよう

04-06 14:12:39.668 15630-15630/io.wem.my.mywem E/AndroidRuntime: FATAL EXCEPTION: main 
                  Process: io.wem.my.mywem, PID: 15630 
                  java.lang.RuntimeException: Unable to start activity ComponentInfo{io.wem.my.mywem/io.wem.my.mywem.WEMProject}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.net.NetworkInfo.getTypeName()' on a null object reference 
                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665) 
                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 
                   at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                   at android.os.Looper.loop(Looper.java:154) 
                   at android.app.ActivityThread.main(ActivityThread.java:6119) 
                   at java.lang.reflect.Method.invoke(Native Method) 
                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
                   Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.net.NetworkInfo.getTypeName()' on a null object reference 
                   at io.wem.my.mywem.WEMProject.haveNetworkConnection(WEMProject.java:33) 
                   at io.wem.my.mywem.WEMProject.onCreate(WEMProject.java:61) 
                   at android.app.Activity.performCreate(Activity.java:6679) 
                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 
                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618) 
                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)  
                   at android.app.ActivityThread.-wrap12(ActivityThread.java)  
                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)  
                   at android.os.Handler.dispatchMessage(Handler.java:102)  
                   at android.os.Looper.loop(Looper.java:154)  
                   at android.app.ActivityThread.main(ActivityThread.java:6119)  
                   at java.lang.reflect.Method.invoke(Native Method)  
                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)  
                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)  

haveNetworkConnection()メソッド:

private boolean haveNetworkConnection() { 
    boolean haveConnectedWifi = false; 
    boolean haveConnectedMobile = false; 

    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo netInfo = cm.getActiveNetworkInfo(); 

    if (netInfo != null) { 
     if (netInfo.getTypeName().equalsIgnoreCase("WIFI")) 
      if (netInfo.isConnected()) 
       haveConnectedWifi = true; 
     if (netInfo.getTypeName().equalsIgnoreCase("MOBILE")) 
      if (netInfo.isConnected()) 
       haveConnectedMobile = true; 
    } 

    return haveConnectedWifi || haveConnectedMobile; 
} 

解決済み:netInfoがnullであることを確認できませんでした。hasNetworkConnectionのコードスニペットを作業用バージョンに変更しました。

+0

あなたはログを表示することができますか? – muilpp

+0

_ "何が足りないのですか?" _ [logcatのエラーメッセージ](http://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this#23353174 ) –

+0

元の投稿に追加されました。私の質問を見てくれてありがとう! – schilpr

答えて

-1

AndroidのConnectivityManager documentationgetActiveNetworkInfo()の引用:

戻り値を|現在のデフォルトのネットワークまたはnull ためNetworkInfoオブジェクトは、デフォルトのネットワークが

だから、現在アクティブでない場合、それがうまくnullを返すことが、あなたのコードは、このケースを処理する必要があります。例えば

ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo netInfo = cm.getActiveNetworkInfo(); 

if (netInfo != null) { 
    if (netInfo.getTypeName().equalsIgnoreCase("WIFI")) 
     if (netInfo.isConnected()) 
      haveConnectedWifi = true; 
     if (netInfo.getTypeName().equalsIgnoreCase("MOBILE")) 
      if (netInfo.isConnected()) 
       haveConnectedMobile = true; 
} 
+0

飛行機モードで電話を使ってテストしていたことがありがたいです、これで問題は解決しました。 – schilpr

関連する問題