大家好,我是Android的初学者,但我想做的是在我的地图中推送infoWindowAdapter时开始一项新活动。代码似乎很简单,但它不起作用,我不知道为什么。你能帮助我吗?我在清单中声明了我的新活动(MoreInfoActivity),我想从主活动中调用它。您可以在下面找到我所有的" MoreInfoActivity" source,来自MainActivity的调用以及清单中的声明。非常感谢你
当我推送InfoWindowAdapter时从MainActivity调用: [更新]
final Activity thiz = this;
map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
/*Nuova chiamata di un activity (scelta perché più pratica e la richiamiamo anche dalla listview)*/
/*************************************************************************************************/
String nome_luogo = marker.getTitle();
Intent piu_info = new Intent(thiz, MoreInfoActivity.class);
piu_info.putExtra("nome", nome_luogo);
startActivity(piu_info);
/*************************************************************************************************/
}
});
MoreInfoActivity: [已更新]
public class MoreInfoActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_moreinfo);
Bundle extras = getIntent().getExtras();
if (extras != null){
String value = extras.getString("nome");
prendi_informazioni(value);
}
}
public void prendi_informazioni(String nome_luogo){
View layout = getWindow().getDecorView().findViewById(R.id.immagine_luogo);
//String nome_luogo = marker.getTitle();
BuildInfoMatrix printinfo = new BuildInfoMatrix();
printinfo.Fill_Matrix();
printinfo.Read_Matrix(nome_luogo, layout);
}
}
清单:
<!-- More informations Activity -->
<activity
android:name="com.example.findmyclients.MoreInfoActivity"
android:screenOrientation="portrait">
</activity>
Logcat: http://pastebin.com/pKuW4LCk
答案 0 :(得分:2)
我不完全确定您的语法是否正确。我正在质疑的部分是MainActivity.this
。我不完全确定这意味着什么,但它可能是班级的一个实例。而是在clickListener之外创建一个Activity变量,并从clickListener创建引用。例如:
final Activity thiz = this; /* Needs to be final so you can reference it in inner class */
map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
View v2 = getLayoutInflater().inflate(R.layout.activity_moreinfo, null);
MoreInfoActivity prova = new MoreInfoActivity();
prova.prendi_informazioni(marker);
Intent piu_info = new Intent(thiz, MoreInfoActivity.class);
startActivity(piu_info);
}
});
作为旁注,您永远不应该自己实例化活动的实例。如果需要将额外参数传递给活动,请通过添加额外内容将其附加到intent。看这里: http://developer.android.com/reference/android/content/Intent.html#putExtra(java.lang.String,双[])
例如:
String nome_luogo = marker.getTitle();
piu_info.putExtra("marker", nome_luogo );
和更多信息的onCreate:
String marker = getIntent().getExtras().getString("marker");
doSomething(marker);
你现在这样做的方式,即使你没有得到空指针异常,你的参数也不会被MoreInfoActivity看到
答案 1 :(得分:0)
问题在于
public void prendi_informazioni(Marker marker){
View layout;
layout = findViewById(R.id.immagine_luogo);
String nome_luogo = marker.getTitle();
BuildInfoMatrix printinfo = new BuildInfoMatrix();
printinfo.Fill_Matrix();
printinfo.Read_Matrix(nome_luogo, layout);
}
是否在R.layout.activity_moreinfo中定义了immagine_luogo?