0

現在、私は機能を追加したいアプリケーションで作業しています。インターネットがない場合は、アクティビティのレイアウトを変更する必要があります。私はちょっとアンドロイドではあまり良くありません。私はこのアイデアをちょっとしたアイデアのために使いました。どのようにこれを達成するためのアイデア。私はアプリがクラッシュしようとするとき。私のインターネット接続状態に応じて、setContentViewのレイアウトを変更します。

public class RescuingActivity extends AppCompatActivity { 

private BroadcastReceiver receiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if(ConnectivityStatus.isConnected(getContext())){ 
      setContentView(R.layout.rescue_page); 
     }else { 
      setContentView(R.layout.no_connection); 
     } 
    } 
}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    getContext().registerReceiver(receiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 
} 
} 

Logcatエラー:

xxx/E/AndroidRuntime: FATAL EXCEPTION: main Process: xxx, PID: 6258 java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx.xxx.xxxxxxx/xxx.xxx.xxxxxxx.view.RescuingActivity}: java.lang.NullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2221) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2280) at android.app.ActivityThread.access$800(ActivityThread.java:141) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1202) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5059) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at com.kit.arescue.view.RescuingActivity.onCreate(RescuingActivity.java:90)

+0

可視性で同じレイアウトファイルでこれを使用してください。 –

+0

@JinalPatelコードのある小さな例です。 –

+0

この方法では何も問題はありません。あなたの質問は何ですか? – earthw0rmjim

答えて

0

を追加することを忘れていけないが、答えを見つけることが2つのビューで作業してみました。

private BroadcastReceiver receiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if(!ConnectivityStatus.isConnected(getContext())){ 
      childLayoutRescuingActivity.setVisibility(INVISIBLE); 
      childLayoutNoConnection.setVisibility(View.VISIBLE); 
     }else { 
      childLayoutRescuingActivity.setVisibility(View.VISIBLE); 
      childLayoutNoConnection.setVisibility(INVISIBLE); 
     } 
    } 
}; 
0

public boolean isConnectingToInternet(){ 
    ConnectivityManager connectivity = (ConnectivityManager) Login_Page.this.getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (connectivity != null) 
     { 
      NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
      if (info != null) 
       for (int i = 0; i < info.length; i++) 
        if (info[i].getState() == NetworkInfo.State.CONNECTED) 
        { 
         try 
         { 
          HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection()); 
          urlc.setRequestProperty("User-Agent", "Test"); 
          urlc.setRequestProperty("Connection", "close"); 
          urlc.setConnectTimeout(500); //choose your own timeframe 
          urlc.setReadTimeout(500); //choose your own timeframe 
          urlc.connect(); 
          int networkcode2 = urlc.getResponseCode(); 
          return (urlc.getResponseCode() == 200); 
         } catch (IOException e) 
         { 
          return (false); //connectivity exists, but no internet. 
         } 
        } 

     } 
     return false; 
} 

この機能を試してみて、アクセス権に

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
+0

私は状況に応じて活動のレイアウトを設定しようとしています、これはありません!!ダウンボート!! –

関連する問題