2016-11-16 11 views
-1

Когда код ниже работает, он показывает температуру в градусах.Как использовать If Else Statement для этого приложения погоды для android

общественного класс MainActivity расширяет AppCompatActivity реализует GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {

private static final String APP_ID = "80e4eede56844462ef3cdc721208c31f"; 

private static final int PERMISSION_ACCESS_COARSE_LOCATION = 1; 
private GoogleApiClient googleApiClient; 

private TextView textView; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    textView = (TextView) findViewById(R.id.textView); 

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) 
      != PackageManager.PERMISSION_GRANTED) { 
     ActivityCompat.requestPermissions(this, new String[] { Manifest.permission.ACCESS_COARSE_LOCATION }, 
       PERMISSION_ACCESS_COARSE_LOCATION); 
    } 

    googleApiClient = new GoogleApiClient.Builder(this, this, this).addApi(LocationServices.API).build(); 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
    switch (requestCode) { 
     case PERMISSION_ACCESS_COARSE_LOCATION: 
      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       // All good! 
      } else { 
       Toast.makeText(this, "Need your location!", Toast.LENGTH_SHORT).show(); 
      } 

      break; 
    } 
} 

@Override 
protected void onStart() { 
    super.onStart(); 
    if (googleApiClient != null) { 
     googleApiClient.connect(); 
    } 
} 

@Override 
protected void onStop() { 
    googleApiClient.disconnect(); 
    super.onStop(); 
} 

@Override 
public void onConnected(Bundle bundle) { 
    Log.i(MainActivity.class.getSimpleName(), "Connected to Google Play Services!"); 

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) 
      == PackageManager.PERMISSION_GRANTED) { 
     Location lastLocation = LocationServices.FusedLocationApi.getLastLocation(googleApiClient); 

     double lat = lastLocation.getLatitude(), lon = lastLocation.getLongitude(); 
     String units = "imperial"; 
     String url = String.format("http://api.openweathermap.org/data/2.5/weather?lat=%f&lon=%f&units=%s&appid=%s", 
       lat, lon, units, APP_ID); 
     new GetWeatherTask(textView).execute(url); 
    } 
} 

@Override 
public void onConnectionSuspended(int i) { 

} 

@Override 
public void onConnectionFailed(ConnectionResult connectionResult) { 
    Log.i(MainActivity.class.getSimpleName(), "Can't connect to Google Play Services!"); 
} 

private class GetWeatherTask extends AsyncTask<String, Void, String> { 
    private TextView textView; 

    public GetWeatherTask(TextView textView) { 
     this.textView = textView; 
    } 

    @Override 
    protected String doInBackground(String... strings) { 
     String weather = "UNDEFINED"; 
     try { 
      URL url = new URL(strings[0]); 
      HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 

      InputStream stream = new BufferedInputStream(urlConnection.getInputStream()); 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream)); 
      StringBuilder builder = new StringBuilder(); 

      String inputString; 
      while ((inputString = bufferedReader.readLine()) != null) { 
       builder.append(inputString); 
      } 

      JSONObject topLevel = new JSONObject(builder.toString()); 
      JSONObject main = topLevel.getJSONObject("main"); 
      weather = String.valueOf(main.getDouble("temp")); 


      urlConnection.disconnect(); 
     } catch (IOException | JSONException e) { 
      e.printStackTrace(); 
     } 
     return weather; 
    } 


    @Override 
    public void onPostExecute(String temp) { 
     textView.setText("Weather temperature is: " + temp + "°"); 


    } 
} 

}

Может кто-нибудь помочь мне о том, как использовать тогда и другое заявление, чтобы сделать так, что если температура ниже определенной степени, пользовательский интерфейс отобразит некоторый текст, и если он выше определенной степени, отобразит другой текст?

+0

Пожалуйста, просто зайдите google 'Java if else' и' Java Android Toast', и вы готовы пойти – Aidin

ответ

1
@Override 
public void onPostExecute(String temp) { 
    textView.setText("Weather temperature is: " + temp + "°"); 

    if (temp < someValue) 
      //doSomething 
    else 
     //doSomethingElse 
} 

Это должно быть достаточно интуитивным.

+0

Это зависит от вашего макета. Если у вас есть TextView, используйте setText. – AlphaQ

0

первую очередь вы получите темп, как двойное значение не преобразовать его в строку, заменить этот

weather = String.valueOf(main.getDouble("temp")); 

к

double weather = main.getDouble("temp"); 

и сделать это

@Override 
public void onPostExecute() { 
if (weather < yourValue) 
     //yourCode 
else 
    //anthorCode 
} 

ИЛИ если вы хотите преобразовать значение temp в строку, просто добавьте это

@Override 
public void onPostExecute() { 
if (weather.equals("yourValue")) 
     //yourCode 
else 
    //anthorCode 
} 

и я не рекомендую это.

+0

Привет, когда я добавил Вашу рекомендацию: double weather = main.getDouble ("temp"); говорится, что «погода» уже определена в области. Что я могу сделать? –

+0

removeString weather; –

+0

Я удалил String weather = UNDEFINED, и теперь он говорит, что не может разрешить символ погоды при «возвратной погоде». Как это исправить? –

 Смежные вопросы

  • Нет связанных вопросов^_^