Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Jeka-D
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 14
#1

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

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

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

Воспроизвести звук по нажатию кнопки Android
Android Форматирование текста и действие по нажатию кнопки назад
Android Смена фото по нажатию кнопки
Textview. Изменение текста по нажатию кнопки не происходит Android
Android Вызов телефона, по нажатию кнопки
Как изменить ссылку по нажатию кнопки? Android
Android Как создать кнопку по нажатию кнопки?
Создать базу данных по нажатию кнопки Android
WebView - не открывается FilePicker по нажатию кнопки Android
Android Выключение экрана по нажатию кнопки
Очистка StringBuilder по нажатию кнопки Android
GMailSender+JSSEProvider, отправка письма на почту по нажатию кнопки Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kirawa
33 / 33 / 1
Регистрация: 12.11.2013
Сообщений: 336
12.11.2014, 07:01     Авторизация по нажатию кнопки #2
Spelcrawler
522 / 492 / 110
Регистрация: 12.03.2014
Сообщений: 1,643
Завершенные тесты: 1
12.11.2014, 12:31     Авторизация по нажатию кнопки #3

Не по теме:

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



Добавлено через 9 минут
На каком этапе не получается? Как не получается(вылетает, не отрабатывает)?
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)

Не могу понять чего оно хочет?
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);
Yandex
Объявления
14.11.2014, 19:40     Авторизация по нажатию кнопки
Ответ Создать тему
Опции темы

Текущее время: 03:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru