Intent Extras.getString() не сравнивается правильно - Android

У меня есть активность под названием searchProcedures, которая позволяет пользователю выбирать из списка медицинских процедур. Я перехожу к этому действию из двух других действий, называемых searchHome и descriptionVisit. Мне нужен был способ, чтобы searchProcedures знал, к какому виду деятельности он должен вернуться обратно на onClick. Поэтому я передаю intent.extra из searchHome или descriptionVisit (ключ:"sentFrom", значение ""). Затем в searchProcedures я использую следующий код, чтобы определить, к какому классу перейти.

Intent intent = getIntent();
    Bundle extras = intent.getExtras();
    if(!extras.isEmpty()){
        if(extras.containsKey("sentFrom")){
            if(extras.getString("sentFrom") == "searchHome"){
                returnIntent = new Intent(searchProcedures.this, searchHome.class);
            }
            else if(extras.getString("sentFrom") == "describeVisit"){
                returnIntent = new Intent(searchProcedures.this, describeVisit.class);
            }
            else{
                Log.d("failed", "the value of getString is " + extras.getString("sentFrom"));
            }
        }
    }

Проверяя значения журнала, правильные значения передаются в и из активности, но когда я проверяю extras.getString("sentFrom") == "searchHome/describeVisit" он возвращается как ложный, и returnIntent остается не инициализированным. Я пытался положить.toString после.getString безрезультатно.

2 ответа

Решение

1.

== сравнивает ссылки на объекты, а не содержимое

Вы должны использовать:

"searchHome".equals(extras.getString("sentFrom"))

Помните, чтобы проверить пустое пространство,...

2.

Вы можете использовать статическую переменную в вашей SearchProceduresActivity, чтобы проверить, откуда она взялась

SearchProceduresActivity

public static int sFrom = SEARCHHOME;

SearchHomeActivity:

Intent myIntent = new Intent(SearchHomeActivity.this, SearchProceduresActivity.class);
SearchProceduresActivity.sFrom = SEARCHHOME;
startActivity(myIntent);

DescribeVisitActivity:

Intent myIntent = new Intent(DescribeVisitActivity.this, SearchProceduresActivity.class);
SearchProceduresActivity.sFrom = DESCRIBEVISIT;
startActivity(myIntent);

SEARCHHOME, DESCRIBEVISIT значение зависит от вас

Надеюсь, это поможет!

Строка сравнения должна использовать равные не ===

Другие вопросы по тегам