我如何在主 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);
....
....
}
所以,我现在的代码是什么,我有一个点击自定义信息。 我有针对特定地点的特定自定义 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);
....
....
}