安卓的一个SearchLocationPoiActivity中有一个listview列表,点击搜索出来的一条数据,会跳转到DrivingActivity,并且传递一些经纬度数据,在DrivingActivity中,拿到这些数据去进行路线规划,规划成功后添加一个fragment,就是显示导航的诱导页。问题是跳转的时候,fragment没有加载出来之前,会显示黑屏,这个怎么解决?帮我解决一下
时间: 2023-10-08 10:10:54 浏览: 60
这个问题的根本原因是在 DrivingActivity 中加载 Fragment 的时候,需要一些时间来进行路线规划,而这个时间可能会比 Activity 的启动时间长,导致在路线规划完成之前,用户看到的是黑屏。
解决这个问题,你可以在 DrivingActivity 的 onCreate() 方法中,先显示一个占位视图,例如一个 ProgressBar,然后再进行路线规划。路线规划完成后,再将 ProgressBar 隐藏,并添加导航诱导页的 Fragment。
以下是示例代码:
```java
public class DrivingActivity extends AppCompatActivity {
private ProgressBar mProgressBar;
private MapFragment mMapFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_driving);
mProgressBar = findViewById(R.id.progress_bar);
mMapFragment = new MapFragment();
// 显示进度条
mProgressBar.setVisibility(View.VISIBLE);
// 进行路线规划
calculateRoute(new OnRouteCalculatedListener() {
@Override
public void onRouteCalculated(Route route) {
// 隐藏进度条
mProgressBar.setVisibility(View.GONE);
// 添加导航诱导页的 Fragment
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, mMapFragment)
.commit();
}
});
}
private void calculateRoute(final OnRouteCalculatedListener listener) {
// 进行路线规划的代码
// ...
// 路线规划完成后,调用 listener 的回调方法
listener.onRouteCalculated(route);
}
private interface OnRouteCalculatedListener {
void onRouteCalculated(Route route);
}
}
```
在上述代码中,我们先添加了一个 ProgressBar,然后在进行路线规划的过程中,等待路线规划完成后再添加导航诱导页的 Fragment。这样,在规划完成之前,用户会看到一个进度条,而不是黑屏。
阅读全文