Android调用多个方法1对1

时间:2017-07-30 16:12:38

标签: android function methods call

我有这个功能,它检查用户的选择是什么。 所以举个例子 有4个选择:

  1. InfoOfUp
  2. InfoOfArt
  3. InfoOfParish
  4. InfoOfAteneo。
  5. 因此,当用户在下一个活动中选择InfoOfUp和InfoOfArt时,我将单击包含功能的按钮:selected()它将检查用户选择的项目。如果用户选择InfoOfUp项,它将运行一个特定的功能,如果用户选择InfoOfArt项,它也将运行一个特定的功能

    问题是每个项目都有自己的功能,每个项目都有进度对话框,标记功能是否已经完成。 因此,用户选择2项是错误的,因为同时调用了2个函数;

    我希望函数调用1by1,其中函数等待另一个函数完成。

    为避免混淆,我将方法称为函数。

     public void selected() {
    
         if (InfoOfUp.select == 1) {
                    if (ayala == 0) {
                        ayala();
                    ayala = 1;
                } else if (ayala == 1) {
    
                }
            }
    
            if (InfoOfArt.select == 1) {
                if (art == 0) {
                    ArtInIsland();
    
                    art = 1;
                } else if (art == 1) {
    
                }
            }
    
            if (InfoOfParish.select == 1) {
                if (parish == 0) {
                    parish();
                    parish = 1;
    
                } else if (parish == 1) {
    
                }
            }
    
    
            if (InfoOfAteneo.select == 1) {
    
                if (ateneo == 0) {
                    ateneogallery();
                    ateneo = 1;
                } else if (ateneo == 1) {
    
                }
    
            }
    

    此外,如果函数调用,它将运行asynctask来获取数据。 这是我的asynctask:

    public class connectAsyncTask3 extends AsyncTask<Void, Void, String> {
        private ProgressDialog progressDialog;
        private traffic traffic;
        private boolean displayDestinationDetails;
        String url;
        boolean launchDestination;
    
        connectAsyncTask3(String urlPass, traffic traffic, boolean displayDestinationDetails) {
            this.url = urlPass;
            this.traffic = traffic;
            this.displayDestinationDetails = displayDestinationDetails;
        }
    
        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            try {
                super.onPreExecute();
                progressDialog = new ProgressDialog(traffic.this);
                progressDialog.setMessage("Fetching route, Please wait...");
                progressDialog.setIndeterminate(true);
                progressDialog.show();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        @Override
        protected String doInBackground(Void... params) {
            JSONParser jParser = new JSONParser();
            String json = jParser.getJSONFromUrl(url);
            return json;
        }
    
        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            progressDialog.hide();
            if (result != null) {
                Log.d("momo2", " : " + result);
                traffic.drawPath(result);
                speakOut();
    
    
            }
    
            if (displayDestinationDetails) {
    
                Intent i = new Intent(traffic.this, poppers.class);
                i.putExtra("currentMarker", traffic.markers.size());
                traffic.startActivity(i);
    
    
            }
    
    
    
    
    
    
        }
    }
    

1 个答案:

答案 0 :(得分:0)

经典的多线程情况。 创建两个线程,每个线程在相关的方法中,启动它们并使用

  

的Thread.join()   首次完成后才开始第二个线程。

great example here