Вы на правильном пути, но ваша основная проблема заключается в том, как вы извлекаете данные из пакета Intent.
Во-первых, рассмотрите ваш код:
if(bundle != null) {
String India = bundle.getString("India");
countryName.setText("India,South Asia");
}
if(bundle != null) {
String Australia = bundle.getString("Australia");
countryName.setText("Australia,Oceania");
}
Вы, по сути, Сначала извлеките информацию об Индии. Независимо от того, успешно ли это, вы затем делаете то же самое для Австралии - перезаписывая текст, который вы только что установили для Индии. Вы сможете увидеть только Австралию в качестве результата.
Ваша вторая проблема заключается в том, как вы используете дополнительные функции Intent. Из документации Android :
publi c Намерение putExtra (имя строки, значение строки)
имя строка: Имя дополнительных данных с префиксом пакета.
value String: Значение данных String. Это значение может быть нулевым.
Поэтому вам лучше использовать дополнительное имя, например com.mypackage.CountryName
, а затем установить значение India
. После этого вы можете получить отдельный дополнительный Intent с именем com.mypackage.CountryDetails
с описательным значением, которое вы хотите показать sh. В вашей MapsActivity:
Intent intent = new Intent(this,Country.class);
if("India".equals(marker.getTitle())) {
intent.putExtra("com.mypackage.CountryName", "India,South Asia");
intent.putExtra("com.mypackage.CountryDetails", "...");
} else if("Australia".equals(marker.getTitle())){
intent.putExtra("com.mypackage.CountryName", "Australia,Oceania");
intent.putExtra("com.mypackage.CountryDetails", "...");
}
startActivity(intent);
А в вашей стране Адаптер:
Button bt = findViewById(R.id.button);
bt.setOnClickListener(v -> openMap());
TextView countryName = findViewById(R.id.textView);
TextView Main = findViewById(R.id.textView2);
Bundle bundle = getIntent().getExtras();
if(bundle != null) {
String name = bundle.getString("com.mypackage.CountryName");
countryName.setText(name);
String details = bundle.getString("com.mypackage.CountryDetails");
countryDetails.setText(details);
// If you absolutely must do something on a per-country basis, then use a
// switch or chained if..else inside of this if statement
}
// Notice how the second if statement is gone
}
public void openMap(){
finish();
}
}
Вы можете долго обсуждать делегирование обязанностей и архитектуру. Я игнорирую это сейчас. Но с точки зрения хорошей практики кодирования для присвоения имен вашим дополнениям Intent, посмотрите на этот связанный ответ .