РЕШИТЬ:
Я исправил проблему. Благодаря Теду, указавшему мне правильное направление кода результата, возвращающего 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 никогда не обновляется. Любая помощь? Я действительно застрял в этом.
Спасибо за ваше время!!!
Бобби