Проблема с отправкой данных из одного вида деятельности в другой - PullRequest
0 голосов
/ 24 июня 2011

РЕШИТЬ: Я исправил проблему. Благодаря Теду, указавшему мне правильное направление кода результата, возвращающего 0. Затем я понял, что когда основное действие было вызвано снова. Это отменяло результат. Поэтому я проверил свой файл манифеста, и у меня был включен одиночный экземпляр ....


Я потратил много времени на решение этой проблемы. Погуглил за ответы. Но я не могу никуда добраться. Я новичок в Android и плохо знаком с публикацией в переполнении стека, поэтому извините, если я испортил форматирование

Хорошо, у меня есть приложение с основным видом деятельности. На этой активности у меня есть кнопка для входа. Когда пользователь нажимает кнопку входа, он открывается в новом действии (Login Activity), которое в основном позволяет пользователю войти в систему. Все это работает и проверено. Но моя проблема в том, что когда пользователь входит в систему, я хочу передать его имя, фамилию и ID пользователя обратно в основное действие. Чтобы попытаться передать данные между двумя действиями, я попытался выполнить http://developer.android.com/resources/faq/commontasks.html#opennewscreen (ниже под заголовком «Возврат результата с экрана».

Хорошо, вот код того, как я это делаю: Основной код деятельности:

logIn = (Button)this.findViewById(R.id.LogInButton);
     logIn.setVisibility(View.INVISIBLE);
     logIn.setOnClickListener(new OnClickListener() 
     {
         @Override
         public void onClick(View v) 
         {
             Intent loginIntent = new Intent(Main.this, Login.class);
             startActivityForResult(loginIntent, LOGIN_CODE);
         }
     });


     @Override 
 public void onActivityResult(int requestCode, int resultCode, Intent data) {     
   super.onActivityResult(requestCode, resultCode, data); 
   switch(requestCode) { 
     case (LOGIN_CODE) : { 
       if (resultCode == Activity.RESULT_OK) {
           this.setLogin(data);
       } 
       break; 
     } 
   } 
 }

Вот код активности входа в систему:

  /**
  * Login to user.
  */
 private void loginCheck()
 {
     firstName = firstNameET.getText().toString();
     lastName = lastNameET.getText().toString();
     patientID = patientIDET.getText().toString();
     password = passwordET.getText().toString();

     boolean loginCorrect = management.isLoginCorrect(patientID, firstName, lastName, password);
     if(loginCorrect == true)
     {
         //Pass login data to main(QOLMeasurment) activity and bring us back to that activity.
         Intent intent = new Intent(Login.this, QOLMeasurement.class);
         Bundle bundle = new Bundle();

         bundle.putString("firstName", firstName);
         bundle.putString("lastName", lastName);
         bundle.putString("patientID", patientID);
         intent.putExtras(bundle);

         setResult(Activity.RESULT_OK, intent);

         Log.d("TEST", "TEST!");
         Login.this.finish();
         Log.d("TEST", "TEST:(");

     }
     else
     {
         Toast.makeText(this, "Login Failed.", Toast.LENGTH_LONG).show();
     }

 }

Так что моя проблема в том, что я не могу вернуть данные в основную деятельность. Попытки устранить это здесь - мои проблемы. Насколько я понимаю, метод startActivityForResult () начнет прослушивать результат, а результат будет обработан методом onActivityResult (); Таким образом, в своей активности входа в систему я устанавливаю функцию ResResult (), а затем закрываю операцию, которая передает resultCode, на onActivityResult (). Правильно ли я в этом понимаю?

Если это так, то проблема, по-видимому, заключается в том, что когда я вызываю Login.this.finish (); Кажется, он не завершает действие, и в результате resultCode никогда не обновляется. Любая помощь? Я действительно застрял в этом. Спасибо за ваше время!!! Бобби

1 Ответ

0 голосов
/ 24 июня 2011

В коде активности входа замените:

Intent intent = new Intent(Login.this, Main.class);

на

Intent intent = new Intent();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...