Как я могу изменить текстовое представление макета в другой деятельности по щелчку customInfoWindow в основной деятельности - PullRequest
0 голосов
/ 05 марта 2020

Итак, каков мой код прямо сейчас, когда у меня есть пользовательская информация при нажатии. У меня есть специфика c custom windows для указанных c мест, использующих этот код:

Main Java Активность:

@Override
    public void onInfoWindowClick(Marker marker) {

        if("India".equals(marker.getTitle())) {
            Intent intent = new Intent(this,India.class);
            startActivity(intent);
        }
        if("Australia".equals(marker.getTitle())){
            Intent intent = new Intent(this,Australia.class);
            startActivity(intent);
        }
    }

Это в настоящее время что у меня есть.

Единственное различие между двумя раскладками - это текст.

Есть ли какой-нибудь код, который я мог бы написать, что при нажатии customInfowWindow из Sydney marker изменяется текст макета к тому, что я хочу для Сиднея, и когда кто-то нажимает на пользовательское окно Индии, текст в этом макете изменяется на то, что я хочу для Индии.

Например, когда кто-то нажимает на инфоудову любых двух стран, я хочу, чтобы они получить их соответствующую информацию не путем создания другого макета, а с помощью команды changetext.

Кроме того, это не мой полный код. Я дал только код, который можно изменить или является полезным.

Пожалуйста, дайте прямой ответить.

Ответы [ 3 ]

2 голосов
/ 05 марта 2020

Просто передайте выбранный заголовок следующему действию, используя putExtra, и получите заголовок следующего занятия, используя getExtra, используя намерение, и измените текстовое представление на основе выбранного заголовка.

Отправьте, используя -

Intent intent = new Intent(this,India.class);
intent.putExtra("title",marker.getTitle())
startActivity(intent);

Получение с помощью -

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_layout_name);
    //Find id of your text views
    ...
    ....
    String title  = getIntent().getStringExtra("title");
    textView1.setText(title);

}

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

1 голос
/ 05 марта 2020

В вашей функции onInfoWindowClick вам нужно установить параметр в намерении, которое вы собираетесь использовать для начала каждого странового действия:

@Override
public void onInfoWindowClick(Marker marker) {

    if("India".equals(marker.getTitle())) {
        Intent intent = new Intent(this,India.class);
        intent.putExtra("title",marker.getTitle())
        startActivity(intent);
    }
    if("Australia".equals(marker.getTitle())){
        Intent intent = new Intent(this,Australia.class);
        intent.putExtra("title",marker.getTitle())
        startActivity(intent);
    }
}

Во всех страновых действиях в onCreate:

@Overrride
public void onCreate(....) {
    .....
    .....
    String title = getIntent().getStringExtra("title");

    TextView txTitle = findViewById( R.id.tittle_textview_identifier_in_your_activity_layout);
    txTitle.setText( title);
    ....
    ....
}
1 голос
/ 05 марта 2020

Сначала вы должны создать общий вид деятельности для отображения информации о любой стране. Например, назовите его InfoDisplayer. Затем вы должны отредактировать ваш метод, как показано ниже.

@Override
public void onInfoWindowClick(Marker marker) {

    Intent intent = new Intent(getApplicationContext(), InfoDisplayer.class);
    Bundle bundle = new Bundle();
    switch (marker.getTitle()){
        case "India":
            bundle.putString("info", "India info");
            //you can put any info String, Int, e.g
            intent.putExtras(bundle);
            startActivity(intent);
            break;
        case "Australia":
            bundle.putString("info", "Australia info");
            intent.putExtras(bundle);
            startActivity(intent);
            break;
    }
}

Затем вы можете получить информацию из метода InfoDisplayer.class onCreate (), например

Bundle bundle = getIntent().getExtras();
String info = bundle.getString("info");

Так что вы можете использовать эту строку везде, где вы хочет

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