Mehdi
Mehdi

Reputation: 181

Get all JSON response and then start another activity

I am doing socket programming and getting JSON response. Everything is working perfectly but the only thing that is getting me in trouble is that I start another activity before getting response but I want to get all response and after that start another activity. Here is my code.

jsonobject1.put("username", edt.getText().toString());
                jsonobject1.put("udid",
                        "A892E0AB-6732-4F42-BEFA-3157315E9EE4");
                try {

                    socket.emit("setPseudo", jsonobject1);
                    socket.emit("findAllUsers", jsonobject1);
                    Log.e("TAG",""+ socket.getId());

                    Intent intent = new Intent(MainActivity.this,
                            MenuScreen.class);
                    intent.putExtra("onlineuser", onlineuser);
                    intent.putExtra("finduser", finduserjson);
                    startActivity(intent);

In my above code I am sending JSON data to server and getting JSON object in response. But before getting the response I am being sent to another activity. So I first want response and then start activity. Help me with some pseudo code.

Thanks

Upvotes: 0

Views: 1105

Answers (2)

Aniruddha
Aniruddha

Reputation: 4487

Create an AsyncTask class

public class GetJSONResult extends AsyncTask<String, Void, Void>
    {
        ProgressDialog pd ;

        private Context _context;

        public GetJSONResult(Context c)
        {
            _context = c;
        }

        protected void onPreExecute()
        {
            super.onPreExecute();
            pd = new ProgressDialog(_context);
            pd.setTitle("Getting JSON details");
            pd.setMessage("Please wait...");
            pd.setCancelable(false);
            pd.setIndeterminate(true);
            pd.show();
        }

        @Override
        protected Void doInBackground(String... params) {
            // TODO Auto-generated method stub

            try
            {
                 jsonobject1.put("username", params[0]);    // params[0] is the value passed i.e edittext value 
            jsonobject1.put("udid", 
                    "A892E0AB-6732-4F42-BEFA-3157315E9EE4")
               socket.emit("setPseudo", jsonobject1); 
                socket.emit("findAllUsers", jsonobject1); 
                Log.e("TAG",""+ socket.getId());
            }

            catch (Exception e)
            {
                if (pd.isShowing())
                    pd.dismiss();

            }

            return null;

        }


        protected void onPostExecute(Void v)
        {
            super.onPostExecute(v);
            try
            {
                if (pd.isShowing())
                    pd.dismiss();
            }
            catch(Exception e)
            {

            }

             Intent intent = new Intent(MainActivity.this,
                        MenuScreen.class); 
                intent.putExtra("onlineuser", onlineuser);
                intent.putExtra("finduser", finduserjson);
                startActivity(intent);
        }
    }

Form your MainActivity call the AsyncTask like this

public MainActivity extends Activity
{

@Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.your_layout);
        // First get the reference to EditText using findViewById, then
       String s = edt.getText().toString();

      // Call the AsyncTask

      new GetJSONResult(MainActivity.this).execute(s);   // pass the edittext value to doInBackGround method.

    }
}

Upvotes: 1

Vaishali Sutariya
Vaishali Sutariya

Reputation: 5121

private class getResponse extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        // Showing progress dialog
        progressDialog = new ProgressDialog(getActivity());
        progressDialog.setMessage("Loading...");
        progressDialog.setCancelable(false);
        progressDialog.show();

    }

    @Override
    protected Void doInBackground(Void... arg0) {

      jsonobject1.put("username", edt.getText().toString());
            jsonobject1.put("udid",
                    "A892E0AB-6732-4F42-BEFA-3157315E9EE4");
            try {

                socket.emit("setPseudo", jsonobject1);
                socket.emit("findAllUsers", jsonobject1);
                Log.e("TAG",""+ socket.getId());

            } catch (Exception e) {

                e.printStackTrace();
            }

        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        // Dismiss the progress dialog
        if (progressDialog.isShowing()) {
            progressDialog.dismiss();
        }

         Intent intent = new Intent(MainActivity.this,
                        MenuScreen.class);
                intent.putExtra("onlineuser", onlineuser);
                intent.putExtra("finduser", finduserjson);
                startActivity(intent);

    }

    @Override
    protected void onCancelled() {

        super.onCancelled();
        progressDialog.dismiss();

    }

}

and for executing new getResponse().execute();

Upvotes: 0

Related Questions