Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 14
1

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

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

Author24 — интернет-сервис помощи студентам
Привет всем!
В Android Studio создаю приложение с Login Activity. Там есть кнопка для отправки введенных емейл и пароль.
хочу реализовать действие по ее нажатию.
И пришел к такой логике:
Нажимаешь на кнопку
- идет проверка подключения к сети(если подключение отсутствует - выдает ошибку)
- создает в бекграунд поток для подключения к серверу
- берет строковые значения введенные пользователем
- подключается к веб-серверу со пхп скриптом для авторизации и передает ему эти значения
- получает ответ и редиректит на страницу с профилем пользователя (иначе выдает ошибку в зависимости от ответа сервера)
теперь просьба:
подскажите ресурсы для реализации данной логики, в инете нашел кучи инфы(башка уже кипит), пробовал каждый предложенные метод. и фиг! ничего не получается!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.11.2014, 20:34
Ответы с готовыми решениями:

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

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

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

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

4
35 / 35 / 2
Регистрация: 12.11.2013
Сообщений: 345
12.11.2014, 07:01 2
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
12.11.2014, 12:31 3

Не по теме:

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



Добавлено через 9 минут
На каком этапе не получается? Как не получается(вылетает, не отрабатывает)?
0
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
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.11.2014, 19:40
Помогаю со студенческими работами здесь

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

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

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

Открытие окна по нажатию кнопки
Подскажите пожалуйста, как сделать так чтоб при нажатии кнопки открывалось данное окно (поверх...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru