Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 获取所有JSON响应,然后启动另一个活动_Android_Json_Android Activity_Android Asynctask - Fatal编程技术网

Android 获取所有JSON响应,然后启动另一个活动

Android 获取所有JSON响应,然后启动另一个活动,android,json,android-activity,android-asynctask,Android,Json,Android Activity,Android Asynctask,我正在进行套接字编程并获得JSON响应。一切都很好,但唯一让我陷入麻烦的是,我在得到回应之前开始另一项活动,但我想得到所有回应,然后再开始另一项活动。 这是我的密码 jsonobject1.put("username", edt.getText().toString()); jsonobject1.put("udid", "A892E0AB-6732-4F42-BEFA-3157315E9EE4");

我正在进行套接字编程并获得JSON响应。一切都很好,但唯一让我陷入麻烦的是,我在得到回应之前开始另一项活动,但我想得到所有回应,然后再开始另一项活动。 这是我的密码

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);
在我上面的代码中,我向服务器发送JSON数据,并获得JSON对象作为响应。但在得到回复之前,我被派往另一个活动。因此,我首先需要响应,然后开始活动。帮我写一些伪代码

感谢

私有类getResponse扩展异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
//显示进度对话框
progressDialog=新建progressDialog(getActivity());
progressDialog.setMessage(“加载…”);
progressDialog.setCancelable(假);
progressDialog.show();
}
@凌驾
受保护的Void doInBackground(Void…arg0){
jsonobject1.put(“用户名”,edt.getText().toString());
jsonobject1.put(“udid”,
“A892E0AB-6732-4F42-BEFA-3157315E9EE4”);
试一试{
emit(“setPseudo”,jsonobject1);
emit(“findAllUsers”,jsonobject1);
Log.e(“TAG”,“socket.getId());
}捕获(例外e){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
super.onPostExecute(结果);
//关闭进度对话框
if(progressDialog.isShowing()){
progressDialog.disclose();
}
意向意向=新意向(MainActivity.this,
菜单筛选类);
intent.putExtra(“onlineuser”,onlineuser);
intent.putExtra(“finduser”,finduserjson);
星触觉(意向);
}
@凌驾
受保护的void onCancelled(){
super.onCancelled();
progressDialog.disclose();
}
}

用于执行新的getResponse().execute()

创建一个AsyncTask类

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);
        }
    }

您可以使用异步任务执行套接字操作。在onPostExecute中,您可以启动活动。检查这里,这是不正确的。请检查您的后台处理方法。无法与其中的UI线程交互。这不是“与UI线程交互”。。顺便说一句,你回答了我的问题,你也回答了我的问题answered@Vaishali你的回答有误。在你的回答下面,我也给出了原因。请检查。您无法访问doInBackGround方法中的UI元素。@Vaishali有很多不同之处,请检查,您会了解的。
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);
        }
    }
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.

    }
}