У меня есть два счетчика, мой первый (SpinnerRoute) работает нормально, и я получаю выбранное значение и отправляю его на сервер, который отправит список значений второго счетчика (spinnerStation) из базы данных.
Моя проблема со вторым счетчиком, я хочу отправить выбранное значение на другой URL-адрес, который я буду использовать в следующем действии.
Я ожидаю отправить выбранный счетчик в set_time.php, но когда я запускаю код, он показывает «Выборка данных» и когда я выбираю значение из spinnerRoute, он показывает значение в spinnerStation, а приложение просто перестает работать (даже не показывая сообщение «нажмите OK»).
Спасибо за вашу помощь.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
spinnerStation= (Spinner)findViewById(R.id.spinnerStation);
spinnerRoute=(Spinner)findViewById(R.id.spinnerRoute);
stationList = new ArrayList<Station>();
//it works
spinnerRoute.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// Refresh Spinner
stationList.clear();
new GetStationFromServer().execute();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
//doesn't work
spinnerStation.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// Refresh Spinner
routeList.clear();
stationName = spinnerStation.getSelectedItem().toString();
new FromServer().execute(stationName);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
private class FromServer extends AsyncTask<String, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(ProfileActivity.this); //MainActivity
pDialog.setMessage("click OK");
pDialog.show();
}
@Override
protected Void doInBackground(String... params) {
String s = params[0];
Handler jsonParser = new Handler();
String json = jsonParser.makeServiceCall("http://192.168.1.2/Android/v1/set_time.php?station="+s, Handler.GET);
return null ;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
if (pDialog.isShowing())
pDialog.dismiss();
//populateSpinnerStation();
}
}
private class GetStationFromServer extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(ProfileActivity.this);
pDialog.setMessage("Fetching Data");
pDialog.show();
}
@Override
protected Void doInBackground(Void... arg0) {
routeName = spinnerRoute.getSelectedItem().toString();
Handler jsonParser = new Handler();
String json = jsonParser.makeServiceCall("http://192.168.1.2/Android/v1/get_station.php?route="+routeName, Handler.GET);
Log.e("Response: ", "> " + json);
if (json != null) {
try {
JSONObject jsonObj = new JSONObject(json);
if (jsonObj != null) {
JSONArray station = jsonObj
.getJSONArray("station");
for (int i = 0; i < station.length(); i++) {
JSONObject modObj = (JSONObject) station.get(i);
Station mod = new Station (modObj.getString("station"));
stationList.add(mod);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
} else {
Log.e("JSON Data", "Didn't receive any data from server!");
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
if (pDialog.isShowing())
pDialog.dismiss();
populateSpinnerStation();
}
}
private void populateSpinnerStation() {
List<String> lables = new ArrayList<String>();
for (int i = 0; i < stationList.size(); i++) {
lables.add(stationList.get(i).getStation());
}
// Creating adapter for spinner
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, lables);
// Drop down layout style - list view with radio button
spinnerAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinnerStation.setAdapter(spinnerAdapter);
}