我如何在主 activity 中单击 customInfoWindow 更改不同 activity 布局的文本视图

How can i change the textview of a layout in different activity on click of customInfoWindow in main activity

所以,我现在的代码是什么,我有一个点击自定义信息。 我有针对特定地点的特定自定义 windows 使用此代码:

主要JavaActivity:

@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);
        }
    }

这是我目前拥有的。

两种布局之间的唯一区别是文本。

是否有一些我可以编写的代码,当单击悉尼标记的 customInfoWindow 时,布局的文本更改为我想要的悉尼,当有人单击印度的 custominfowindow 时,该布局中的文本更改为我想要的印度。

例如,当有人点击任何 2 个国家的 infowidow 时,我希望他们不是通过制作不同的布局而是通过 changetext 命令来获取各自的信息。

此外,这不是我的完整代码,我只给出了可以更改或有用的代码。

请直接回答

只需使用 putExtra 将选定的标题传递给下一个 activity 并使用 getExtra 在下一个 Activity 上使用意图获取标题并根据选定的标题更改文本视图.

使用-发送

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);

}

希望对您有所帮助。

您应该首先创建一个公共 activity 来显示任何国家/地区的信息。 例如将其命名为 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");

所以你可以在任何地方使用那个字符串

在您的 onInfoWindowClick 函数中,您需要在要用于启动每个国家/地区的 Intent 中设置一个参数 activity:

@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);
    }
}

在所有国家/地区 activity,在 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);
    ....
    ....
}