Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Jeka-D
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 14
1

Авторизация по нажатию кнопки

11.11.2014, 20:34. Просмотров 743. Ответов 4
Метки нет (Все метки)

Привет всем!
В Android Studio создаю приложение с Login Activity. Там есть кнопка для отправки введенных емейл и пароль.
хочу реализовать действие по ее нажатию.
И пришел к такой логике:
Нажимаешь на кнопку
- идет проверка подключения к сети(если подключение отсутствует - выдает ошибку)
- создает в бекграунд поток для подключения к серверу
- берет строковые значения введенные пользователем
- подключается к веб-серверу со пхп скриптом для авторизации и передает ему эти значения
- получает ответ и редиректит на страницу с профилем пользователя (иначе выдает ошибку в зависимости от ответа сервера)
теперь просьба:
подскажите ресурсы для реализации данной логики, в инете нашел кучи инфы(башка уже кипит), пробовал каждый предложенные метод. и фиг! ничего не получается!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2014, 20:34
Ответы с готовыми решениями:

Воспроизвести звук по нажатию кнопки
Добрый день! Используя пример, написал приложение, которое по нажатию на...

Закрыть активити по нажатию кнопки
Есть код Куда прописать код чтобы я после нажатие кноки отправил данные и...

Вызов телефона, по нажатию кнопки
Уважаемые, подскажите, как осуществить вызов приложения "Телефон" что бы...

Повтор кода по нажатию кнопки
Всем привет! Я написал программу, в которой есть такой, повторяющийся 4 раза...

Очищение TextView по нажатию кнопки
Вопрос. Почему не очищается TextView (в данном случае TextView_Print) при...

4
kirawa
35 / 35 / 2
Регистрация: 12.11.2013
Сообщений: 345
12.11.2014, 07:01 2
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.11.2014, 12:31 3

Не по теме:

Есть стол и на нем ручка. Хочу сделать так, чтобы когда дергаю за ручку открывался ящик. Купил кучу разных инструментов все перепробовал, руки уже болят, но ничего не выходит. :)



Добавлено через 9 минут
На каком этапе не получается? Как не получается(вылетает, не отрабатывает)?
0
Jeka-D
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 14
14.11.2014, 18:44  [ТС] 4
Привет еще раз!
Сори за предыдущий вопрос - был пьян и постигал суть задачи, получилось не вопрос, а мысли "вслух"!)
Вот код:
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
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 LoginActivity 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.activity_login);
        Button btn = (Button) findViewById(R.id.btnLogin);
        Button reg = (Button) findViewById(R.id.btn_to_register);
        login = (EditText) findViewById(R.id.email_string);
        pass = (EditText) findViewById(R.id.pass_string);
        //Кнопка регистрации
        reg.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(LoginActivity.this, RegisterActivity.class);
                startActivity(i);
            }
        });
        btn.setOnClickListener(new OnClickListener() {
 
            @Override
            public void onClick(View v) {
                //указываю куда конектится
                new RequestTask().execute("http://192.168.1.3:81/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();
                //послать post запрос
                HttpPost postMethod = new HttpPost(params[0]);
                //передаю два параметра
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
                //передаю параметры из текстбоксов
                //лоигн
                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);
                if (response != null) {
                    //редирект на вторую активность
                    Intent profile = new Intent(LoginActivity.this, LoginInfo.class);
                    startActivity(profile);
                }
            } catch (Exception e) {
                System.out.println("Exp=" + e);
            }
            return null;
        }      
}
Вот код RegActivity
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
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.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
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.util.ArrayList;
import java.util.List;
 
public class RegisterActivity extends Activity {
    public EditText email;
    public EditText pass;
    public EditText fullname;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.register);
        Button btnreg = (Button) findViewById(R.id.btn_to_register);
        email = (EditText) findViewById(R.id.reg_email);
        pass = (EditText) findViewById(R.id.reg_password);
        fullname = (EditText) findViewById(R.id.reg_fullname);
        /*TextView loginScreen = (TextView) findViewById(R.id.link_to_login);
        loginScreen.setOnClickListener(new View.OnClickListener() {
 
            public void onClick(View arg0) {
                Intent toLogin = new Intent(RegisterActivity.this, LoginActivity.class );
                startActivity(toLogin);
            }
        });*/
        btnreg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new RegistrTask().execute ("http://192.168.1.3:81/reg.php");
            }
        });
 
    }
    class RegistrTask extends AsyncTask<String, String, String> {
 
        @Override
        protected String doInBackground(String... params) {
 
            try {
                //запрос на сервер
                DefaultHttpClient hc = new DefaultHttpClient();
                ResponseHandler<String> res = new BasicResponseHandler();
                // post запрос
                HttpPost postMethod = new HttpPost(params[0]);
                //передаю 3 параметра
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);
                //передаю параметры из текстбоксов
                //Имя
                nameValuePairs.add(new BasicNameValuePair("fullname", fullname.getText().toString()));
                //Email
                nameValuePairs.add(new BasicNameValuePair("email", email.getText().toString()));
                //пароль
                nameValuePairs.add(new BasicNameValuePair("pass", pass.getText().toString()));
                //собираю вместе и посылаю на сервер
                postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                //получаю ответ от сервера
                String response = hc.execute(postMethod, res);
                if(response != null) {
                    //возвращаюсь на логин активити
                    Intent reg_login = new Intent(RegisterActivity.this, LoginActivity.class);
                    startActivity(reg_login);
                }
             } catch (Exception e) {
                System.out.println("Exp=" + e);
            }
            return null;
        }
    }
}
Логин активити нормально компилится, а вот когда я нажимаю на кнопку регистрации или компилю регактивити все СТОПается и выдает ошибки:

1637-1637/com.mixband.testactivity E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mixband.testactivity/com.mixband.testactivity.RegisterActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.mixband.testactivity.RegisterActivity.onCreate(RegisterActivity.java:48)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
************at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
************at android.app.ActivityThread.access$600(ActivityThread.java:141)
************at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
************at android.os.Handler.dispatchMessage(Handler.java:99)
************at android.os.Looper.loop(Looper.java:137)
************at android.app.ActivityThread.main(ActivityThread.java:5041)
************at java.lang.reflect.Method.invokeNative(Native Method)
************at java.lang.reflect.Method.invoke(Method.java:511)
************at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
************at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
************at dalvik.system.NativeStart.main(Native Method)

Не могу понять чего оно хочет?
0
Jeka-D
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 14
14.11.2014, 19:40  [ТС] 5
Цитата Сообщение от Jeka-D Посмотреть сообщение
Не могу понять чего оно хочет?
всё, разобрался!
в классе RegisterActivity
в строке
Java
1
 Button btnreg = (Button) findViewById(R.id.btn_to_register);
прописал не правильный ID кнопки, он совпадал со строкой в классе LoginActivity
Java
1
Button reg = (Button) findViewById(R.id.btn_to_register);
0
14.11.2014, 19:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2014, 19:40

Очистка StringBuilder по нажатию кнопки
Добрый день, подскажите как полностью очистить StringBuilder по нажатию кнопки....

Выключение экрана по нажатию кнопки
Необходимо выключить экран по нажатию кнопки. Пробовал KeyguardManager, но...

Смена фото по нажатию кнопки
Здравствуйте. Я изучаю програмирование Android не очень давно. Хочу Сделать...


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

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

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