2017-01-04 4 views
0

私のコードでは、インターネットが利用できないときに警告ダイアログを表示しました。そのダイアログで私は "インターネットが利用できません"というメッセージを設定しました。そのダイアログでは、2つのボタン 'Refresh' & 'Setting'を配置しました。インターネットに行ったときに&ダイアログが来たら、私は設定ボタンをクリックしました。設定のインテント呼び出し中にNullPointerExceptionが発生しました

これはエラー(Logcat)です。

E: FATAL EXCEPTION: main Process: 
     com.appiphy.spacecomp.spinnerframework1, PID: 30424 
      java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread 
    android.app.ActivityThread.getApplicationThread()' on a null object 
    reference 

      at android.app.Activity.startActivityForResult(Activity.java:3823) 
      at android.app.Activity.startActivityForResult(Activity.java:3784) 
      at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:784) 
      at android.app.Activity.startActivity(Activity.java:4094) 
      at android.app.Activity.startActivity(Activity.java:4062) 
      at com.appiphy.spacecomp.spinnerframework1.activity.MainActivity$10.onClick(MainActivity.java:967) 
      at android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:157) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:135) 
      at android.app.ActivityThread.main(ActivityThread.java:5297) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703) 

startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS)); 

Iは、デバイスの設定を開くためにライン上で使用。

上記のエラーを解決するにはどうすればよいですか?

+3

あなたのコードを投稿してください – AJay

+0

このコードは私の場合にはうまくいきます。 – Spartan

+0

あなたのダイアログはアクティビティの外にあります。この 'context.startActivity(新しいインテント(android.provider.Settings.ACTION_SETTINGS));' – Spartan

答えて

0

はこれを試してみてください:

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(new ContextThemeWrapper(this, android.R.style.Theme_Holo_Light_Dialog)); 
      alertDialogBuilder 
        .setMessage("No internet connec" + 
          "" + 
          "tion on your device. Would you like to enable it?") 
        .setTitle("No Internet Connection") 
        .setCancelable(false) 
        .setPositiveButton(" Enable Internet ", 
          new DialogInterface.OnClickListener() { 

           public void onClick(DialogInterface dialog, int id) { 
            Intent dialogIntent = new Intent(android.provider.Settings.ACTION_SETTINGS); 
            dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
            startActivity(dialogIntent); 
           } 
          }); 

      alertDialogBuilder.setNegativeButton(" Cancel ", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.cancel(); 
       } 
      }); 

      AlertDialog alert = alertDialogBuilder.create(); 
      alert.show(); 

     } 
0

私はあなたのダイアログがあなたの活動の中や他のいくつかのユーティリティクラスであるかどうかわかりません。そのアクティビティの外側にある場合は、コンテキストを使用してインテントを開始する必要があります。アクティビティのコンテキストを渡すことができ、 Intent intent = new Intent(android.provider.Settings.ACTION_SETTINGS))を呼び出します。 mContext.startActivity(intent); mContextは、アクティビティを渡すコンテキストです。

関連する問題