所以我有这个fab菜单,每个按钮有不同的活动我想要的是将函数放入一个java文件而不是创建大量的java文件来调用按钮中的不同函数
这是一个java文件 - SVAuditorium.class
。
public class SVAuditorium extends AppCompatActivity {
private static final LatLng Auditorium = new LatLng(10.294335, 123.880809);
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.street_view);
SupportStreetViewPanoramaFragment streetViewPanoramaFragment =
(SupportStreetViewPanoramaFragment)
getSupportFragmentManager().findFragmentById(R.id.streetviewpanorama);
streetViewPanoramaFragment.getStreetViewPanoramaAsync(
new OnStreetViewPanoramaReadyCallback() {
@Override
public void onStreetViewPanoramaReady(StreetViewPanorama panorama) {
if (savedInstanceState == null) {
panorama.setPosition(Auditorium);
}
}
});
}
}
这就是我从SVAuditorium
和其他人那里调用活动所做的。
case R.id.fab_auditorium:
startActivity(new Intent(this, SVSAuditorium.class));
break;
case R.id.fab_library:
startActivity(new Intent(this, SVLibrary.class));
break;
case R.id.fab_main:
startActivity(new Intent(this, SVMainBuilding.class));
break;
答案 0 :(得分:1)
正如你所声明的那样,你在每个Activity
中只有lat-long的变化,我建议保留你想要的单个活动并通过意图传递lat-long。这是一个示例代码,展示了如何实现该行为。
Intent intent = new Intent(MainActivity.this, SVActivity.class);
Bundle longLat = new Bundle();
longLat.putDouble("LONGITUDE", longitude);
longLat.putDouble("LATITUDE", latitude);
intent.putExtras(longLat);
startActivity(intent);
像这样获取SVActivity
中的纬度和经度。
Bundle longLat = getIntent().getExtras();
double longitude = longLat.getDouble("LONGITUDE");
double latitude = longLat.getDouble("LATITUDE");
根据SVActivity
。
答案 1 :(得分:1)
Latlng只是与众不同
自LatLng implements Parcelable
您只需要一个 Java文件,您可以使用Intent.putExtra("latlng", latlng)
通过Intent传递LatLng,您可以在其中为每个点击的项目定义该变量
见答案 - Android: How to pass Parcelable object to intent and use getParcelable method of bundle?
然后在一个Activity的onCreate方法中,您可以LatLng latlng = getIntent().getParcelableExtra("latlng")