Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Senum
3 / 2 / 0
Регистрация: 02.05.2014
Сообщений: 92
#1

Не могу подать значение из EditText в BasicNameValuePair - Программирование Android

20.05.2017, 05:14. Просмотров 168. Ответов 5
Метки нет (Все метки)

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package ru.smart.myapplication;
 
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
 
import org.apache.http.NameValuePair;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
 
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
 
public class MainActivity extends Activity {
 
    public EditText login;
    public EditText pass;
    private ProgressDialog dialog;
    private InputStream is;
    SecondActivity url;
 
    @Override
public void onCreate(Bundle savedInstanceState) {
 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button btn = (Button) findViewById(R.id.button1);
        login = (EditText) findViewById(R.id.editText1);
        pass = (EditText) findViewById(R.id.editText2);
        btn.setOnClickListener(new OnClickListener() {
 
            @Override
public void onClick(View v) {
             
new RequestTask().execute("http://myhomepage.hol.es/login.php");
            }
        });
    }
 
    class RequestTask extends AsyncTask<String, String, String> {
 
        @Override
protected String doInBackground(String... params) {
 
            try {
               
DefaultHttpClient hc = new DefaultHttpClient();
                ResponseHandler<String> res = new BasicResponseHandler();
                
HttpPost postMethod = new HttpPost(params[0]);
               
             
nameValuePairs.add(new BasicNameValuePair("login", login.getText().toString()));
                
nameValuePairs.add(new BasicNameValuePair("pass", pass.getText().toString()));
               
postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            
String response = hc.execute(postMethod, res);
               
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                intent.putExtra(SecondActivity.JsonURL, response.toString());
                startActivity(intent);
            } catch (Exception e) {
                System.out.println("Exp=" + e);
            }
            return null;
        }
 
        @Override
protected void onPostExecute(String result) {
 
            dialog.dismiss();
            super.onPostExecute(result);
        }
 
        @Override
protected void onPreExecute() {
 
            dialog = new ProgressDialog(MainActivity.this);
            dialog.setMessage("Загружаюсь...");
            dialog.setIndeterminate(true);
            dialog.setCancelable(true);
            dialog.show();
            super.onPreExecute();
        }
    }
Нету соединения с сервером, помогите найти ошибку.

в этих строках красным подчеркнуто -login.getText() и pass.getText()


nameValuePairs.add(new BasicNameValuePair("login", login.getText().toString()));

nameValuePairs.add(new BasicNameValuePair("pass", pass.getText().toString()));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2017, 05:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу подать значение из EditText в BasicNameValuePair (Программирование Android):

Ввод в один EditText и авто-вычисление в двух других EditText - Программирование Android
Всем привет. Есть три поля EditText,виртуальные клавиатуры у всех заблокированы,а ввод чисел в поле осуществляется с Button(ов). Вопрос...

EditText смещается вниз при вводе текста, который занимает объём больше, чем EditText - Программирование Android
EditText сещается вниз при вводе текста который занимает обём больше чем EditText. Как устранить?

EditText getText возвращает устаревшее значение - Программирование Android
При повороте экрана, последний набранный текст исчезает. Просто исчезает. Сохранение его в виде строки onSaveInstanceState не помогло -...

Минимальное и максимальное значение для EditText - Программирование Android
Имеется EditText и SeekBar. &lt;EditText android:layout_width=&quot;wrap_content&quot; ...

Обновить значение EditText после получения данных от диалогового окна - Программирование Android
Здравствуйте. В моем приложении есть несколько EditText'ов. При нажатии на один из них я вызываю DatePickerDialog и полученный результат...

Как получить значение, введенное пользователем в EditText, созданного программно? - Программирование Android
Уважаемые программисты, очень нужна помощь. У меня имеется на форме кнопка, которая создает новый editText. Как сделать так, что бы в...

5
arvalon
21 / 6 / 2
Регистрация: 26.10.2012
Сообщений: 171
Записей в блоге: 1
21.05.2017, 19:22 #2
При наведении на подчёркнутую часть строки какая ошибка? Может быть просто Warning что эти значения могут оказаться пустыми?
Отсутствие соединения с сервером - это уже ошибка во время исполнения?
0
Senum
3 / 2 / 0
Регистрация: 02.05.2014
Сообщений: 92
21.05.2017, 19:29  [ТС] #3
Method getText must be called from the UI thread, currently inferred thread is worker

Отсутствие связи с сервером скорее всегда связано с сервером, проверяю.
0
arvalon
21 / 6 / 2
Регистрация: 26.10.2012
Сообщений: 171
Записей в блоге: 1
21.05.2017, 20:01 #4
А, ну да, у вас же всё завёрнуто в AsyncTask, а это другой поток. Передавать/получать значения между потоками так просто нельзя. И в случае AsynkTask'а есть несколько способов делать это, в зависимости от того как вам это удобнее и каких правил придерживаетесь.
1. Можно например так, через первый параметр AsyncTask'а <Param,..,...>
Или более близким к вашему первоначальному способу всё же получить в потоке AsyncTask'а необходимые значения из UI-потока.
2. Или в вашем RequestTask классе, добавьте пару полей и в onPreExecute() присвойте им значения. onPreExecute выполняется в UI-потоке и имеет ко всему доступ.
3. Наиболее близкий к вашему решению способ (и ИМХО наименее используемый) - вызвать у view (которым у вас выступают текстовые поля) метод post (прямо в doInBackground), а в него передать Runnable всего лишь навсего вытащит нужные значения. Тут показано как примерно можно это сделать.
4. Ещё есть runOnUiThread, но думаю какой-нибудь из первых двух способов сделать....
0
Senum
3 / 2 / 0
Регистрация: 02.05.2014
Сообщений: 92
21.05.2017, 20:47  [ТС] #5
Цитата Сообщение от arvalon Посмотреть сообщение
3. Наиболее близкий к вашему решению способ (и ИМХО наименее используемый) - вызвать у view (которым у вас выступают текстовые поля) метод post (прямо в doInBackground), а в него передать Runnable всего лишь навсего вытащит нужные значения. Тут показано как примерно можно это сделать.
По чему наименее используемый?, если есть более хорошие варианты решения моей проблемы то подскажите
0
arvalon
21 / 6 / 2
Регистрация: 26.10.2012
Сообщений: 171
Записей в блоге: 1
21.05.2017, 21:00 #6
ИМХО, не просто так написал.
Ну, просто потому что наименее часто встречаю этот способ (метод post на view с созданием и передачей туда Runnuble) по сравнению с передачей значений в класс и присвоения полям, если ищу что-нибудь по теме.
И наверное потому что такой способ менее читаем. В будущем, если забудете что писали или какой-нибудь другой человек посмотрит.
Наверное лучше через конструктор и/или через execute. тыц!
0
21.05.2017, 21:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2017, 21:00
Привет! Вот еще темы с ответами:

Подать в алгебраической форме - ТФКП
Ребят, помогите решить задачку. Тема моей расчетки: Теория функций комплексной переменной.

Подать напряжение на ножку МК - AVR
Добрый день! Прошу прощения за банальный вопрос! Только начинаю изучать программирование МК. Пишу такую вот конструкцию в Amtel Studio под...

Подать в ссылку обновленный параметр - C# MVC
Всем привет! Ребят никак не могу понять как сделать следующее: Есть страница добавления товара: @model...

Подать управляющие воздействия на объект. - Delphi
Не знаю по адресу ли я пишу, но всё таки. Вопрос касающийся ООП. Имеем: Исходные данные : M – номер опрашиваемого датчика, K – число...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.