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 значение зависит от вас
Надеюсь, это поможет!