Как передать поисковый запрос другому действию с помощью кнопки поиска

Я разрабатываю приложение для Android для поиска работы, здесь PHP в качестве серверной части. Список вакансий, получаемый с сервера и отображаемый в виде карты, работает хорошо. Здесь я хочу выполнить поиск по местоположению и названию должности. Итак, как передать мое местоположение и должность из поисковой деятельности в деятельность по работе.

 private void searchjob() {

        final String title = jobtitle.getText().toString().trim();
        final String location = city.getSelectedItem().toString().trim();

        Intent intent = new Intent(HomeActivity.this, MainActivity.class);
        intent.putExtra(title,1);
        intent.putExtra(location,2);


        startActivity(intent);
        overridePendingTransition(R.anim.slide_in, R.anim.slide_out);
    }

Это мой Java-класс Download Card.

public class DownloaderCard extends AsyncTask<Void, Integer, String> {
    Context c;
    String address;
    SwipeDeck swipeDeck;
    ProgressDialog pd;
    String url = "";

    public DownloaderCard(Context c, String address, SwipeDeck swipeDeck) {
        this.c = c;
        this.address = address;
        this.swipeDeck = swipeDeck;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pd = new ProgressDialog(c);
        pd.setTitle("Please Wait");
        pd.setMessage("Loading....");
        pd.show();
    }
    @Override
    protected String doInBackground(Void... params) {
        String data = downloadData();
        return data;
    }
    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        pd.dismiss();
        if (s!=null){
            //Toast.makeText(c, s, Toast.LENGTH_LONG).show();
            ParserCard p = new ParserCard(c, s, swipeDeck);
            p.execute();
        }else {
            Toast.makeText(c, "Unable to download data from downloader", Toast.LENGTH_LONG).show();
        }
    }
    private String downloadData(){
        InputStream is = null;
        String line = null;
        try {
            URL url = new URL(address);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            is = new BufferedInputStream(connection.getInputStream());
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            StringBuffer sb = new StringBuffer();
            if (br != null){
                while ((line = br.readLine()) != null){
                    sb.append(line+"\n");
                }

            }else {
                return null;
            }
            return sb.toString();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (is != null){
                try {
                    is.close();
                }catch (IOException e){
                    e.printStackTrace();
                }
            }
        }
        return null;
    }
}

Это моя JobActivity.

String urlData = "https://www.joblist.php";

        final DownloaderCard dl = new DownloaderCard(MainActivity.this,urlData , cardStack);
        dl.execute();
        cardStack.setEventCallback(new SwipeDeck.SwipeEventCallback() {
            @Override
            public void cardSwipedLeft(int position) {
                // Log.i("MainActivity", "card was swiped left, position in adapter: " + position);
            }

            @Override
            public void cardSwipedRight(int position) {
                //   Log.i("MainActivity", "card was swiped right, position in adapter: " + position);
            }

            @Override
            public void cardsDepleted() {
                // Log.i("MainActivity", "no more cards");
            }

            @Override
            public void cardActionDown() {
                // Log.i(TAG, "cardActionDown");
            }

            @Override
            public void cardActionUp() {
                // Log.i, "cardActionUp");
            }

        });
        cardStack.setLeftImage(R.id.left_image);
        cardStack.setRightImage(R.id.right_image);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                cardStack.swipeTopCardLeft(180);

            }
        });

        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                cardStack.swipeTopCardRight(180);
            }
        });
    }

вы спросили, как передавать данные между двумя действиями, но вы уже передали данные здесь intent.putExtra(title,1);. Что вы хотите сделать сейчас?

notify_my_threads 20.05.2018 08:13

да. но как передать это PHP-код

Irshad Madappattu 20.05.2018 08:17
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
76
3

Ответы 3

Вот метод, который я использую для отправки информации для входа на сервер PHP ... обновите ее, чтобы она соответствовала вашим целям.

      public String LoginOnService(String url,String email,String pass){
                InputStream inputStream = null;
                String result = "";
                try {

                    // 1. create HttpClient
                    HttpClient httpclient = new DefaultHttpClient();

                    // 2. make POST request to the given URL
                    HttpPost httpPost = new HttpPost(url+"?email = "+email+"&password = "+pass);
                    // 3. Execute POST request to the given URL
                    HttpResponse httpResponse = httpclient.execute(httpPost);
                    if (httpResponse != null){
                       result = EntityUtils.toString(httpResponse.getEntity());
                    }else{
                       result = "Did not work!";
                    }
               } catch (Exception e) {
                    Log.d("InputStream", e.getLocalizedMessage());
               }

               // 11. return result
               return result;
       } 

Как видите, я передаю String, но если вы хотите отправлять данные как JSON, вам также могут пригодиться эти комментарии. но на шаге 2 передайте только URL-адрес HttpPost httpPost = new HttpPost(url);

 public String LoginOnService(String url,String email,String pass){
        InputStream inputStream = null;
        String result = "";
        try {

            // 1. create HttpClient
            HttpClient httpclient = new DefaultHttpClient();

            // 2. make POST request to the given URL
            HttpPost httpPost = new HttpPost(url+"?email = "+email+"&password = "+pass);

//            String json = YOUR_JSON_STRING;

            // 3. build jsonObject
//            JSONObject jsonObject = new JSONObject();
//            jsonObject.accumulate("Email", user.getEmail());
//            jsonObject.accumulate("Password", user.getPassword());

            // 4. convert JSONObject to JSON to String
//            json = jsonObject.toString();

            // ** Alternative way to convert Person object to JSON string usin Jackson Lib
            // ObjectMapper mapper = new ObjectMapper();
            // json = mapper.writeValueAsString(person);

            // 5. set json to StringEntity
//            StringEntity se = new StringEntity(json);

            // 6. set httpPost Entity
//            httpPost.setEntity(se);

            // 7. Set some headers to inform server about the type of the content
//            httpPost.setHeader("Accept", "application/json");
//            httpPost.setHeader("Content-type", "application/json");

            // 8. Execute POST request to the given URL
            HttpResponse httpResponse = httpclient.execute(httpPost);

//             9. receive response as inputStream
//            inputStream = httpResponse.getEntity().getContent();

            // 10. convert inputstream to string
            if (httpResponse != null)
                result = EntityUtils.toString(httpResponse.getEntity());
            else
                result = "Did not work!";

        } catch (Exception e) {
            Log.d("InputStream", e.getLocalizedMessage());
        }

        // 11. return result
        return result;
    }

Я пробовал, но это. не работает. пожалуйста, скажите мне, как передать поисковый запрос, чтобы передать URL

Irshad Madappattu 20.05.2018 08:58

Я все больше запутываюсь, что вы имеете в виду под поисковый запрос? вы имеете в виду запрос, который выполняет поиск на PHP server? проверьте эту ссылку Просмотр поиска Android с PHP и MySQL

notify_my_threads 20.05.2018 09:07

в моем домашнем задании есть 2 текста редактирования, местоположение и название должности и одна кнопка, я хочу передать значения заголовка и местоположения в URL-адрес задания. alot.ae/api/joblist.php - это мой URL-адрес, так как я могу передать значение в URL-адрес php

Irshad Madappattu 20.05.2018 09:18

попробуйте это в своем браузере, я передам значения место расположения и титул с помощью предоставленного вами url, alot.ae/api/joblist.php?location=London&tittle=programmer должен вернуть результат поиска, если вы правильно обрабатываете его в своем PHP.

notify_my_threads 20.05.2018 09:28

да. его рабочий, но. я не знаю как передать это андроид

Irshad Madappattu 20.05.2018 09:32

На самом деле я не понимаю, почему это не сработало в Android, предположим, что вы передали значения с URL-адресом, он должен вернуть результат, содержащий нужные вам данные. Предлагаю вам переписать свой вопрос, пояснить, как вы это делали в комментариях, так что кто-нибудь может увидеть и помочь. удачи.

notify_my_threads 20.05.2018 09:45

проблема с передачей значений в url. из редактировать текст

Irshad Madappattu 20.05.2018 09:47

Иршад! в своем последнем комментарии вы говорите, что не можете использовать getText() из editTtext, а это String location = editText.getText();, это действительно проблема? Я уверен, что это не так.

notify_my_threads 20.05.2018 09:58

Рад узнать. если ответ стоит того, чтобы поделиться им ... опубликуйте его как ответ.

notify_my_threads 20.05.2018 11:43

You should use Volley https://github.com/google/volley для звонка Http Requests, это упростит вашу работу, Вот пример: -

    final String url = "https://www.joblist.php?title=MyJobTitle&location=London";

// prepare the Request
JsonObjectRequest getRequest = new JsonObjectRequest(Request.Method.GET, url, null,
    new Response.Listener<JSONObject>() 
    {
        @Override
        public void onResponse(JSONObject response) {   
                        // display response     
            Log.d("Response", response.toString());
        }
    }, 
    new Response.ErrorListener() 
    {
         @Override
         public void onErrorResponse(VolleyError error) {            
            Log.d("Error.Response", response);
       }
    }
);

// add it to the RequestQueue   
queue.add(getRequest);
  final String title = jobtitle.getText().toString().trim();
        final String location = city.getSelectedItem().toString().trim();

 Intent intent = new Intent(HomeActivity.this, MainActivity.class);
        intent.putExtra("job_title",title);
        intent.putExtra("city",location);

в JobActivity

 String myvalue= getIntent().getExtras("job_title");
 String myvalue2= getIntent().getExtras("city");

PHP код

final String url = "https: //www.joblist.php? title =" + myvalue + "& location = " + myvalue2;

Другие вопросы по теме