Я новичок с Android Studio, создающим приложение, которое будет читать из API. Я пытаюсь заставить API фильтровать результаты, используя параметры, выбранные в двух прядильщиках; один вариант для типа автомобильного зарядного устройства c и другой для максимального радиуса отображения результатов. Приложение неожиданно завершает работу, когда доходит до оператора if (defaultCharger.equals ("0")) ". Поскольку ошибок нет, я закомментировал разные разделы кода, чтобы увидеть, что работает, и эта часть, похоже, является проблемой. Это здесь, поэтому ссылка не будет включать фильтр для типа зарядного устройства, если он не был выбран. Приветствуется любая помощь в решении этой проблемы.
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import android.widget.Spinner;
public class results extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
String link, getLong, getLat;
TextView newAddress, see, testResult;
//Create spinner options
Spinner dropdownone, dropdowntwo;
String[] distance = {"Change the radius in miles", "1", "5", "10"};
String[] chargeType = {"Filter by type of charger", "Under 2kW", "Over 2kW", "40kW and higher"};
String defaultMiles, defaultCharger;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_results);
//text link to go back to home and enter a new address
newAddress = findViewById(R.id.newAddress);
newAddress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
newAddress.setTextColor(getResources().getColorStateList(R.color.colorAccent));
Intent intent = new Intent(results.this, home.class);
startActivity(intent);
}
});
//get longitude and latitude
home home = new home();
if (home.status.equals("gps")){
getLong = home.gpsLong;
getLat = home.gpsLat;
}
else if (home.status.equals("address")){
GeoLocation geoLocation = new GeoLocation();
getLong = geoLocation.adLongitude;
getLat = geoLocation.adLatitude;
}
else {
getLong = "-5.926437";
getLat = "54.607868";
}
//drop down one - choose radius of results
dropdownone = findViewById(R.id.spinner1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(results.this,
android.R.layout.simple_spinner_item,distance);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
dropdownone.setAdapter(adapter);
dropdownone.setOnItemSelectedListener(this);
//drop down two - choose charger type
dropdowntwo = findViewById(R.id.spinner2);
ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(results.this,
android.R.layout.simple_spinner_item,chargeType);
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
dropdowntwo.setAdapter(adapter2);
dropdowntwo.setOnItemSelectedListener(this);
//see if correct values are being returned
see = findViewById(R.id.textView6);
see.setText(defaultMiles + " " + defaultCharger);
//create link
if (defaultCharger.equals("0")){
link = "https://api.openchargemap.io/v3/poi/?output=json&Latitude=" + getLat + "&Longitude=" + getLong + "&distance=" + defaultMiles + "&distanceunit=miles&maxresults=10&compact=true&verbose=false";
}
else {
link = "https://api.openchargemap.io/v3/poi/?output=json&Latitude=" + getLat + "&Longitude=" + getLong + "&distance=" + defaultMiles + "&distanceunit=miles&LevelID=" + defaultCharger + "&maxresults=1&compact=true&verbose=false";
}
testResult = findViewById(R.id.testResult);
testResult.setText(link);
}
@Override
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
switch (parent.getId()){
case R.id.spinner1:
switch (position) {
case 0:
// Create default if nothing is changed
defaultMiles = "0";
break;
case 1:
// 1 mile radius
defaultMiles = "1";
break;
case 2:
// 5 mile radius
defaultMiles = "5";
break;
case 3:
// 10 mile radius
defaultMiles = "10";
break;
}
case R.id.spinner2:
switch (position) {
case 0:
// Default for no charger filter
defaultCharger = "0";
break;
case 1:
// Type 1 charger
defaultCharger = "1";
break;
case 2:
// Type 2 charger
defaultCharger = "2";
break;
case 3:
// Type 3 charger
defaultCharger = "3";
break;
}
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
defaultMiles = "10";
defaultCharger = "0";
}
}