私はこれに似た質問を検索しましたが、悲しいことに私はそれらを本当に混乱させてしまいましたが、AndroidとRetrofitを使っていてもまだ新しいです。Android Retrofit 1.9返信リストストリング成功時
私はここで、コンタクトリストのJSON
http://api.androidhive.info/contacts/
、すでに作業リストを持っているが、その後、私はいつでも私はちょうどそれを呼び出すことができますので、別のクラスにレトロフィットプロセスを処理したかったです。 UIを呼び出すMainActivityと、成功と失敗のメソッドを処理するRetrofitHandlerがあります。ここで
は私の問題は、それがLogCat上のエラーなしでスムーズに実行され、私の主な活動
public class MainActivity extends AppCompatActivity{
//note i just simplifiend my code a little
private List<Contacts> contacts;
public String[] itemer;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RetrofitHandler retrofitHandler = new RetrofitHandler();
itemer = retrofitHandler.getContacts(this);
if (itemer != null) {
Toast.makeText(MainActivity.this,itemer[0],Toast.LENGTH_SHORT).show();
}
}
されており、ここで私のhandlerClassのある
ublic class RetrofitHandler {
public String[] item;
public static final String ROOT_URL = "http://api.androidhive.info";
public List<Contacts> contacts;
public String[] getContacts(final Context context) {
final ProgressDialog loading = ProgressDialog.show(context, "Fetching Data", "Please wait...", false, false);
RestAdapter adapter = new RestAdapter.Builder().setEndpoint(ROOT_URL).build();
ContactsAPI api = adapter.create(ContactsAPI.class);
api.getContacts(new Callback<Contacts>() {
@Override
public void success(Contacts contacts, Response response) {
loading.dismiss();
MainActivity update = new MainActivity();
List<Contact> contactList = contacts.getContacts();
item = new String[contactList.size()];
for (int i = 0; i < contactList.size(); i++) {
item[i] = contactList.get(i).getName();
}
}
@Override
public void failure(RetrofitError error) {
Toast.makeText(context, "Error Occured", Toast.LENGTH_LONG).show();
}
});
return item;
}
。残念ながら主活動のトーストは現れません。
がネットワークコールで、メインスレッドとバックグラウンドスレッドの問題がある可能性があります。 なぜ、 また、受信している応答がヌルであるかどうかを確認してください。 –
@mohitsharma成功したときのトーストは、私が達成したものですが、もともと私は入れたいと思っています。 – user3262438
チェックしてみてください:条件が実行されているかどうか、 ブロック内にPrintlnを入れて、条件をitemer.length/sizeに変更してみてください –