android - 使用 SupportMapFragment 时应用更改按钮不起作用
问题描述
如果我有SupportMapFragment
然后应用更改按钮(黄色)不能成功(应用程序会因Error inflating class fragment
错误而崩溃)
我必须总是按绿色按钮才能看到任何变化
在 12 线我有
<fragment android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"/>
错误:
Process: com.example.test, PID: 4940
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.example.test.MainActivity}: android.view.InflateException: Binary XML file line #12: Binary XML file line #12: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2485)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2545)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4189)
at android.app.ActivityThread.access$1200(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1404)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5602)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:774)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652)
Caused by: android.view.InflateException: Binary XML file line #12: Binary XML file line #12: Error inflating class fragment
at android.view.LayoutInflater.inflate(LayoutInflater.java:543)
at android.view.LayoutInflater.inflate(LayoutInflater.java:427)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:393)
at android.app.Activity.setContentView(Activity.java:2233)
at com.example.test.MainActivity.onCreate(MainActivity.java:67)
at android.app.Activity.performCreate(Activity.java:6358)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2438)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2545)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4189)
at android.app.ActivityThread.access$1200(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1404)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5602)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:774)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652)
'com.google.android.gms:play-services-maps:16.0.0'
使用ps
解决方案
你称之为黄色按钮的那个是即时运行的,因为 MapFragment 不会被添加到 BackStack 导致崩溃,所以当即时运行应用程序时,它不会找到它的实例。您可以通过以下方式修复它:
if (savedInstanceState != null) {
mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentByTag("map");
} else {
mapFragment = SupportMapFragment.newInstance();
FragmentTransaction mapTransaction = getSupportFragmentManager().beginTransaction();
mapTransaction.addToBackStack("map").add(R.id.map, mapFragment, "map").commit();
}
mapFragment.getMapAsync(this);
推荐阅读
- haskell - 创建一个矩形?- 哈斯克尔
- excel - 我可以在 Power BI 中交换 2 个相同的源文件吗?
- c# - 将数据库中的应用程序设置/首选项作为 JSON 保存?
- primefaces - 模态 p:对话框在关闭后使背景变灰
- docker - docker - 无法更改文件(wso2)
- sql - 使用 Timeline 列作为 Hive 分区字段时出现异常
- python - Django 频道在 Windows 10 中安装失败
- android - 获取当前位置中的位置请求超时
- reactjs - Jsfiddle未封闭的正则表达式
- hadoop - 如何在 Flink 独立集群上的 Flink 作业中使用两个 Kerberos 密钥表(用于 Kafka 和 Hadoop HDFS)?