gpt4 book ai didi

android - 如何将具有不同类的 fragment 添加到我的 MainActivity

转载 作者:行者123 更新时间:2023-11-29 19:03:07 24 4
gpt4 key购买 nike

我正在努力将 fragment 添加到我的主 Activity 中,它将显示 Google map 。

我想达到什么目的?

  • 我希望添加的 fragment 有另一个对应的 Java 类。

这是我的 MainActivity 的 xml 文件。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.jovan.APPNAME.MainActivity">

<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:id="@+id/toolbar"
android:background="?attr/colorPrimaryDark"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>

<fragment
android:id="@+id/map"
android:layout_below="@+id/toolbar"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.jovan.APPNAME.MapsActivity" />

</RelativeLayout>

我希望该 fragment 有一个它自己的 java 类。这是 Java 类。

public class MapsActivity extends Fragment implements OnMapReadyCallback {

private GoogleMap mMap;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_main, container, false);
SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
return view;
}


@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;

// 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));
}
}

这里也是主 Activity 的 Java 类。

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

Toolbar toolbar;
DrawerLayout drawerLayout;
NavigationView navigationView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.navigation_drawer);

setTitle("");

toolbar = (Toolbar) findViewById(R.id.toolbar);
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
navigationView = (NavigationView) findViewById(R.id.navigation_view);

setSupportActionBar(toolbar);
navigationView.setNavigationItemSelectedListener(this);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open_drawer, R.string.close_drawer);
drawerLayout.setDrawerListener(toggle);
toggle.syncState();


}

@Override
public void onBackPressed() {
if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
drawerLayout.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}

}

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {

int id = item.getItemId();

switch (id) {


}

drawerLayout.closeDrawer(GravityCompat.START);
return true;
}
}

然而,就目前而言,它不起作用。我假设找不到该 fragment 。知道我该如何解决这个问题并让它发挥作用。感谢您的建议。

更新

我怀疑我的 fragment 和类没有关联属性。我尝试进行答案提供的所有更改,但随后出现黑屏。

最佳答案

在您的 fragment 中,您将引用命名为 android:name="com.google.android.gms.maps.SupportMapFragment"

但是你的Fragment叫做MapsActivity

public class MapsActivity extends Fragment implements OnMapReadyCallback {

关于android - 如何将具有不同类的 fragment 添加到我的 MainActivity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48155812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com