ハローソフトウェア開発者。OnSuccessメソッドは、アクティビティが終了してスピナーコントロールを完成した後に応答します。
私はHttpクライアントライブラリ(http://loopj.com/android-async-http/)を使用しているので、RESTサービスを使用するアンドロイドアプリケーションを開発していますが、スピンコントロールを作成して最初にfillSpinnerTiposSiniestrosメソッドを呼び出し、ArrayListを後でそのArrayListを使ってスピナーのアダプターを塗りつぶしますが、アダプターが最初に確立され、RESTクライアントが呼び出された理由がわからないので、スピナーは空のままです。
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_edit_sinister);
editTextValorClave = (EditText) findViewById(R.id.editTextSinisterValorClave);
editTextValorCurp = (EditText) findViewById(R.id.editTextSinisterValorCurp);
editTextValorDependencia = (EditText) findViewById(R.id.editTextSinisterValorDependencia);
editTextValorRFC = (EditText) findViewById(R.id.editTextSinisterValorRFC);
editTextValorStatus = (EditText) findViewById(R.id.editTextSinisterValorStatus);
//editTextValorTipoSiniestro = (EditText) findViewById(R.id.editTextSinisterValorTipoSiniestro);
spinnerTipoSiniestro = (Spinner) findViewById(R.id.spinnerTipoSiniestro);
editTextValorNumAmbulancia = (EditText) findViewById(R.id.editTextSinisterNumAmbulancia);
editTextValorNombreSieniestro = (EditText) findViewById(R.id.editTextSinisterNombreSieniestro);
editTextValorLocalizacion = (EditText) findViewById(R.id.editTextSinisterValorLocalizacion);
textViewMuestraEncabezado = (TextView) findViewById(R.id.textViewTitulo);
botonAccionAddEdit = (Button) findViewById(R.id.buttonSinisterAddEdit);
botonAccionAddEdit.setOnClickListener(eventoAccionBotonAddEdit);
Bundle miBlunde = getIntent().getExtras();
opcion = miBlunde.getInt("Opcion");
claveGlobal = miBlunde.getInt("Clave");
CargarDatosSpinner;
}
private void rellenarSpinnerTiposSiniestros(){
List<Header> encabezados = new ArrayList<Header>();
encabezados.add(new BasicHeader("Accept", "application/json"));
SiniestroRESTClient.get(AddEditSinisterActivity.this, "api/TipoSiniestro", encabezados.toArray(new Header[encabezados.size()]), null,
new JsonHttpResponseHandler()
{
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray response)
{
arrayTipoSiniestro = new ArrayList<TipoSiniestro>();
tipoSiniestroAdapter = new SpinnerTipoSiniestroAdapter(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item, (TipoSiniestro[]) arrayTipoSiniestro.toArray());
for(int i = 0; i < response.length(); i++)
{
try
{
tipoSiniestroAdapter.add(new TipoSiniestro(response.getJSONObject(i)));
}
catch(JSONException e)
{
e.printStackTrace();
}
}
tipoSiniestroAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerTipoSiniestro.setAdapter(tipoSiniestroAdapter);
}
});
}
Iこの溶液asynchttpclient gives response after activityと試みたが、私のような例外があります
致命的な例外:AsyncTask#1 プロセス:com.maestria.lostperson、PID:13433 java.langです。 RuntimeException:doInBackground()を実行中にエラーが発生しました。アンドロイド.os.AsyncTask $ 3.done()の でjava.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) java.util.concurrent.FutureTask.setException(FutureTask.java:223) でjava.util.concurrent.FutureTask.run(FutureTask.java:242) android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask。 java:234) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread。 run(Thread.java:818) 発生原因:java.lang.IllegalArgumentException:AsyncHttpClientで使用される同期ResponseHandler。ルーパスレッドでレスポンスハンドラを作成するか、代わりにSyncHttpClientを使用する必要があります。 com.maestria.lostperson.clientsでcom.loopj.android.http.AsyncHttpClient.get(AsyncHttpClient.java:1095) でcom.loopj.android.http.AsyncHttpClient.sendRequest(AsyncHttpClient.java:1493) で。 javaのでandroid.os.AsyncTask $ 2.call(AsyncTask.java:295) でSiniestroRESTClient.get(SiniestroRESTClient.java:24)com.maestria.lostperson.AddEditSinisterActivity $ 2.doInBackground(AddEditSinisterActivity.java:159) で 。 (UnrealTask.java:234) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecuto())このスレッドに返信します...返信>あなたがいるjava.lang.Thread.runでjava.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:588) (Thread.java:818)
私に例を教えてもらえますか? –
私は笑いました。上記のコードを提供しました。ブロック内にコードを移動するだけです。ここで私は更新します。 – Sam
次に、この全体をonSuccessの内側に置く – Sam