所以我有此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;
正如您所说的那样,您在每个Activity
中只有长时间的变化,我建议您保留一项像您想要的单个活动,并通过意图通过纬度。这是一个示例代码,显示如何实现行为。
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
中的值初始化您的观点。
latlng只是不同的
因为LatLng implements Parcelable
您只需要一个 Java文件,您就可以使用Intent.putExtra("latlng", latlng)
通过意图传递latlng,在其中您可以在其中定义每个单击项目
请参阅答案 - Android:如何将包裹的对象传递给意图并使用捆绑包的方法?
然后,在该活动的on创作方法中,您可以LatLng latlng = getIntent().getParcelableExtra("latlng")