Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 20 июл 2018, 13:37

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Ошибка при вызове startActivity()
СообщениеДобавлено: 06 окт 2015, 13:44 

Зарегистрирован: 06 окт 2015, 10:42
Сообщений: 1
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Привет всем.

Недавно начал разработку приложений. Возникла одна проблема с вызовами Активити.
У меня есть MainActivity.java и ConnectionToServer.java. Есть форма входа. Поля Логин и Пароль, и кнопка Войти.
Вводим данные, нажимаем Войти и вызывается функция из MainActivity.java

Код: [ Загрузить ] [ Скрыть ]
  1. @Override 
  2.     public void onClick(View v) { 
  3.         switch (v.getId()){ 
  4.             case R.id.button_login: 
  5.                 if (etEmail.getText().toString().trim().length() == 0) { 
  6.                     Tools._toast(R.string.input_email_text_required, context); 
  7.                 } else { 
  8.  
  9.                     String email = etEmail.getText().toString(); 
  10.                     String password = etPassword.getText().toString(); 
  11.  
  12.                     if (etEmail.getText().toString().trim().length() == 0) { 
  13.                         Tools._toast(R.string.input_email_text_required, context); 
  14.                     } else { 
  15.                         try { 
  16.                             toServer.login(email, password, MainActivity.this); 
  17.                         } catch (Exception e) { 
  18.                             e.printStackTrace(); 
  19.                         } 
  20.                     } 
  21.                 } 
  22.                 break; 
  23.         } 
  24.     } 


toServer.login() - у меня в ConnectionToServer.java. Туда пробрасываю MainActivity.this, как Context. Потом передаю ей в AsyncTask(). requestServer rS = new requestServer(context);
После выполнения запроса на сервак запускается
Код: [ Загрузить ] [ Скрыть ]
  1. @Override 
  2.         protected void onPostExecute(JSONObject jsonObject) { 
  3.             super.onPostExecute(jsonObject); 
  4.             tools._progressDialogDismiss(); 
  5.  
  6.             switch (doFunc){ 
  7.                 case "login": 
  8.                     MainActivity mA = new MainActivity(); 
  9.                     try { 
  10.                         mA.doAfterLogin(jsonObject, mContext); 
  11.                     } catch (JSONException e) { 
  12.                         e.printStackTrace(); 
  13.                     } 
  14.                     break; 
  15.             } 
  16.         } 

и должна вызваться функция mA.doAfterLogin(jsonObject, mContext); которая у меня в MainActivity.java

Код: [ Загрузить ] [ Скрыть ]
  1. public void doAfterLogin(JSONObject response, Context mContext) throws JSONException { 
  2.         if(Objects.equals(response.getString("code"), "200")){ 
  3.             goToAccountActivity(response, mContext); 
  4.         } else { 
  5.             String message = response.getString("message"); 
  6.             Tools._toastString(message, mContext); 
  7.         } 
  8.     } 


Она там парсит ответ и если всё гуд, то вызывается функцию перехода на другой Активити

Код: [ Загрузить ] [ Скрыть ]
  1. public void goToAccountActivity(JSONObject res, Context mContext){ 
  2.         startActivity(new Intent(mContext, AccountActivity.class)); 
  3.  
  4.             transitionType = MainActivity.TransitionType.Diagonal; 
  5.             overridePendingTransition(R.anim.zoom_in, R.anim.zoom_out); 
  6.     } 


И вот тут возникает ошибка.

Цитата:
FATAL EXCEPTION: main
Process: com.ergonized.citylike_native, PID: 17761
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
at android.content.ContextWrapper.getPackageName(ContextWrapper.java:132)
at android.content.ComponentName.<init>(ComponentName.java:77)


Хотя если эту же функцию вызвать просто с кнопки, то она вызывается. А вот через ConnectionToServer.java, нет.

Помогите плиз. Спасибо


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Ошибка при вызове startActivity()
СообщениеДобавлено: 06 окт 2015, 16:01 
Аватар пользователя

Зарегистрирован: 09 янв 2012, 14:45
Сообщений: 2386
Откуда: Самара
Благодарил (а): 102 раз.
Поблагодарили: 321 раз.
Цитата:
MainActivity mA = new MainActivity();

Хех, скажите. а кто так активити то создаёт? Вы думаете создав их таким образом, она правильно проинициализируется? Не конечно же! Ведь в goToAccountActivity вы вызываете метод startActivity, и у кого? Вызываете получается его у mA объекта, в котором контекст равен Null.
Если у вас в goToAccountActivity приходит контекст той активити, которую вы изначально передали, то почему от её имени и не вызовете новую активити?
Код: [ Загрузить ] [ Скрыть ]
Using Java(TM) 2 Platform Standard Edition 5.0 Syntax Highlighting
  1. public void goToAccountActivity(JSONObject res, Context mContext){
  2.         mContext.startActivity(new Intent(mContext, AccountActivity.class));
  3.  
  4.             transitionType = MainActivity.TransitionType.Diagonal;
  5.             overridePendingTransition(R.anim.zoom_in, R.anim.zoom_out);
  6.     }
  7.  

_________________
Изображение

А тот ли ты путь выбрал, разработчик?
Хочешь знать ошибки ответ? Загляни в logcat!


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB