我想使用另一个名为MapsActivity的类的地图片段。
编辑:我试着更好地解释,这里的目标是使用从MapActivity类生成的Fragment来加载我的位置。但是,我使用我的主类已经有一个片段。所以我想我必须将我的主类上的Fragment与MapActivity片段链接起来。如果你建议使用同一个类来做那个,那对我来说没关系,我只是不知道如何使用我的自定义类而不是我在这里获得的MapActivity类加载我在地图片段上的位置。
在我的主要课上我得到了这个,这将是我想要的观点:
private MapFragment mapFragment;
在我的主类.xml我得到了这个:
<fragment
android:id="@+id/mapCheckinFazerActivityMapView"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
tools:context=".MapsActivity"
app:layout_constraintBottom_toBottomOf="@+id/imgCheckinFazerActivityBG"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txtCheckinFazerActivityTitle"
app:layout_constraintVertical_bias="0.0" />
现在,我得到了MapsActivity类,这是我进行一些研究后的基本类...
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.mapCheckinFazerActivityMapView);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
Log.d("MYTAG", "READY");
// Add a marker in Sydney and move the camera
LatLng sydney = new LatLng(-34, 151);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
public void test(){
// Add a marker in Sydney and move the camera
LatLng sydney = new LatLng(-34, 151);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
}
我也得到了MapsActivity .xml
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ViewController.MapsActivity" />
如果我直接使用这个类MapsActivity,它确实有效,但我只想将它用作我主要活动的对象。你能帮我个忙吗?提前致谢...
编辑:
也许有了这张图片,最好解释一下。在我的MainActivity上,我得到了这张地图(我可以做什么)我想成为MapActivity类的Google地图......因为你可以看到地图无法识别,而且函数OnMapReady没有被调用
如果我找到了你,你想从MainActivity.java类访问你的GoogleMap对象。以下是如何使用Interface实现的:
首先,您可以在MainActivity.java中创建接口,就像这样,您可以添加此代码
public interface MyMapInterface {
void onMap(LatLng ltlng);
}
然后,在MainActivity.java中声明myMapInterface,as
private MyMapInterface myMapInterface ;
在MainActivity.java中要做的另一件事是使用调用接口的方法,无论您想要访问GoogleMap对象的哪个位置:
myMapInterface.onMap(sydney);
现在,来到你的MapActivity.java类,让你的Activity实现接口,如下所示:
MapActivity implements MyMapInterface
当你这样做时,你会看到该行下方的红线,点击Alt + enter,它会提示你在地图上添加方法(Latlng ltlng),点击回车键添加该方法,然后就可以像这样访问你的地图了:
@Override
public void onMap(Latlng sydney) {
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in
Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
编辑
很抱歉给您带来不便,请试试这个:
使您的接口扩展Serializable类
public interface MyMapInterface extends Serializable {
void onMap(LatLng ltlng);
}
然后,在intent MapActivity.java中传递你的接口对象,如下所示:
intent.putExtra("MyMapInterface", this);
startActivity(intent);
然后在MainActivity.java中:
myMapInterface = getIntent().getSerializableExtra("MyMapInterface");