نمایش نتایج 1 تا 10 از 10

نام تاپیک: عدم اجرای کد در کتابخانه والی در متد Response

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آبان 1394
    محل زندگی
    تهران
    پست
    179

    Question عدم اجرای کد در کتابخانه والی در متد Response

    سلام به شما دوستان عزیز
    من قطعه کدی نوشتم که به سرور وصل بشه و یه سری داده رو ببره مثل username, password اونها چک میکنه اگر مساوی بود که هست اطلاعات رو برمی گردونه .
    که داره درست کار می کنه .تست کردم
    مشکلی که هست وقتی در متد Responce والی میاد انگار که نمیاد ولی میاد من یه log گذاشتم که اون رو نمایش میده اطلاعات درسته .
    ولی در کنترل رو ی صفحه null نشون میده ...
    من کاملا گیج شدم .
    کدها رو میذارم


    public String logInAdminToServer(JSONObject jsonObject) {
    JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST,
    "http://192.168.43.206/project-server/Admin.php?action=LogInAdmin", jsonObject,
    new Response.Listener<JSONObject>() {
    @Override
    public void onResponse(JSONObject response) {
    try {
    firstName = response.getString("AdminFirstName");
    lastName = response.getString("AdminLastName");
    Log.i("Error", firstName + lastName);
    } catch (JSONException e) {
    e.printStackTrace();
    }
    }
    },
    new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
    Log.i("Error", error.toString());
    }
    });
    Volley.newRequestQueue(G.context).add(request);
    return firstName + "," + lastName;
    }

    log رو نشون میده یعنی اطلاعات رو درست می گیره ولی در زمان اجرا روی صفحه من در تکس ویو به جای نام و نام خانوادگی که گرفته null, nullدارم
    فکر کنم دلیل اون delay در volley هست .اینترفیس هم گذاشتم حل نشد ...
    کمک کنید لطفا

  2. #2

    نقل قول: عدم اجرای کد در کتابخانه والی در متد Response

    به نظر میاد درک صحیحی از برنامه نویسی Asynchronous ندارید، متد شما در یک آن اجرا میشه و به return میرسه، ولی درخواست دریافت اطلاعات از سرور با لحضاتی تاخیر دریافت میشه که کاملا طبیعی هست، راه حل های زیادی برای حل این مسئله هست، برای نمونه:

      public void logInAdminToServer(JSONObject jsonObject, TextView myTextView) {
    JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST,
    "http://192.168.43.206/project-server/Admin.php?action=LogInAdmin", jsonObject,
    new Response.Listener<JSONObject>() {
    @Override
    public void onResponse(JSONObject response) {
    try {
    firstName = response.getString("AdminFirstName");
    lastName = response.getString("AdminLastName");
    Log.i("Error", firstName + lastName);
    myTextView.setText(firstName + "," + lastName);
    } catch (JSONException e) {
    e.printStackTrace();
    }
    }
    },
    new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
    Log.i("Error", error.toString());
    }
    });
    Volley.newRequestQueue(G.context).add(request);
    }


    فراخوانی:
    logInAdminToServer(myJson , myTextView);


  3. #3
    کاربر دائمی
    تاریخ عضویت
    آبان 1394
    محل زندگی
    تهران
    پست
    179

    نقل قول: عدم اجرای کد در کتابخانه والی در متد Response

    سلام وممنونم من این کد که شما فرمودین رو تغییر دادم خطا دارم
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.parisa.myfinallproject.ApiService.logI nAdminToServer(org.json.JSONObject, android.widget.EditText)' on a null object reference
    at com.example.parisa.myfinallproject.LoginActivity.l ogInAdmin(LoginActivity.java:58)
    و اینکه اگر ممکنه راه کارهای دیگه ای بهم بگین جون من باید این رو در کلاس های بذارم که مربوط به model و pressenter هست و من باید پترن ها رو هم رعایت کنم .
    اگر راه دیگه ای دارید بهم بگین که من زودتر این مسئله رو حل کنم ...متشکرم

  4. #4
    کاربر دائمی
    تاریخ عضویت
    آبان 1394
    محل زندگی
    تهران
    پست
    179

    نقل قول: عدم اجرای کد در کتابخانه والی در متد Response

    سلام من این کد روهم نوشتم ولی جوابی که میده خیلی دیره و به درد نمی خوره

    public void logInAdminToServer(JSONObject jsonObject, final VolleyCallback callback) {
    JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST,
    "http://192.168.43.206/project-server/Admin.php?action=LogInAdmin", jsonObject,
    new Response.Listener<JSONObject>() {
    @Override
    public void onResponse(JSONObject response) {
    if (response != null) {
    try {
    Log.i("Error", response.getString("AdminFirstName") + response.getString("AdminLastName"));
    callback.OnSuccess(response.getString("AdminFirstN ame") + "," + response.getString("AdminLastName"));
    } catch (JSONException e) {
    e.printStackTrace();
    }
    }
    }
    },
    new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
    Log.i("Error", error.toString());
    }
    });
    request.setRetryPolicy(new DefaultRetryPolicy(5000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    Volley.newRequestQueue(G.context).add(request);
    }

    public interface VolleyCallback {
    void OnSuccess(String result);
    }




    public void logInAdmin() {
    try {
    object.put("AdminUserName", adminUserName);
    object.put("AdminPassword", adminPassword);
    } catch (JSONException ex) {
    ex.printStackTrace();
    }
    //
    //basic login operation
    //
    thread = new Thread(new Runnable() {
    @Override
    public void run() {
    apiService.logInAdminToServer(object, new ApiService.VolleyCallback() {
    @Override
    public void OnSuccess(String result) {
    if (result != null) {
    String str[] = result.split(",");
    adminFirstName = str[0];
    adminLastName = str[1];
    }
    }
    });
    }
    });
    thread.start();
    }




  5. #5
    کاربر دائمی آواتار godofphp
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    between 0 and 1
    پست
    792

    نقل قول: عدم اجرای کد در کتابخانه والی در متد Response


  6. #6
    کاربر دائمی
    تاریخ عضویت
    آبان 1394
    محل زندگی
    تهران
    پست
    179

    نقل قول: عدم اجرای کد در کتابخانه والی در متد Response

    سلام دوستان .ممنونم
    من فیلم آموزشی نگاه کردم سایت ها رو هم مطالعه کردم . ولی مسئله ای که من دارم چیز دیگری هست اینه که من اطلاعات رو از سمت سرور میگیرم . ولی تا بگیرم دیر میشه و دیگه کنترلی که در صفحه نمایش هست مقدار گرفته
    برای اینکه من این زمان رو همزمان کنم و یا یه جوری کنترل کنم باید چه کار کنم ؟؟؟
    یه لینک مفید هم اگر تونستید برام بزارید الان دو روزه هر چیزی رو امتحان کردم ....نشد
    ممنونم

  7. #7
    کاربر دائمی آواتار godofphp
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    between 0 and 1
    پست
    792

    نقل قول: عدم اجرای کد در کتابخانه والی در متد Response

    ولی مسئله ای که من دارم چیز دیگری هست اینه که من اطلاعات رو از سمت سرور میگیرم . ولی تا بگیرم دیر میشه و دیگه کنترلی که در صفحه نمایش هست مقدار گرفته
    متوجه منظورتون نشدم یه ذره واضح تر بگید
    خب شرط بزارید تا زمانی که اطلاعات از سرور نرسیده کنترل رو نمایش نده !
    متد onresponse زمانی اجرا میشه که اطلاعات از سرور رسیده میتونی کنترل را hide کنی و درون متد onresponse مجدد نمایش بدی اون موقع تا زمانی که اطلاعات نرسیده کنترل نمایش داده نمیشه که مقدار دهی هم بشه

  8. #8
    کاربر دائمی
    تاریخ عضویت
    آبان 1394
    محل زندگی
    تهران
    پست
    179

    نقل قول: عدم اجرای کد در کتابخانه والی در متد Response

    ممنونم . اینکه من داخل onresponse از کنترل هااستفاده کنم کار درستیه؟؟؟

  9. #9
    کاربر دائمی
    تاریخ عضویت
    آبان 1394
    محل زندگی
    تهران
    پست
    179

    نقل قول: عدم اجرای کد در کتابخانه والی در متد Response

    دوست عزیز ممنون از راهنمایی شما ولی فرض می کنیم من می خوام یه متغییر رو در
    response
    مقدار دهی کنم بعد در کلاسهای دیگه با اون کار کنم ....اصلا کار بهم میریزه که !!! شما یه نمونه کدی چیزی نداری به من بدین ببینم شما چه طور کار میکنید ؟؟؟

  10. #10
    کاربر دائمی آواتار godofphp
    تاریخ عضویت
    مرداد 1392
    محل زندگی
    between 0 and 1
    پست
    792

    نقل قول: عدم اجرای کد در کتابخانه والی در متد Response

    نقل قول نوشته شده توسط CodeforLife مشاهده تاپیک
    دوست عزیز ممنون از راهنمایی شما ولی فرض می کنیم من می خوام یه متغییر رو در
    response
    مقدار دهی کنم بعد در کلاسهای دیگه با اون کار کنم ....اصلا کار بهم میریزه که !!! شما یه نمونه کدی چیزی نداری به من بدین ببینم شما چه طور کار میکنید ؟؟؟
    منظورتون از اینکه کار بهم میریزه چیه ؟ شما باید عملیاتی که بعد از دریافت نتیجه ی سرور میخواهید انجام بشه رو حتما داخل متد onResponse بنویسید
    شما حتی یکبار به خودتون زحمت ندادی لینکی که دادم رو کامل مطالعه کنید و اگه مطالعه میکردید چنین سوالهای پیش پا افتاده و تکراری رو مطرح نمیکردید

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •