2017-07-07 82 views
0

我正在创建和应用程序,迄今为止一切都很好。今天我正在处理片段中的数据以访问我的web服务并返回json,然后将这些数据插入到我的sqlite中,然后在listview中显示它并逐秒更新数据。Android Studio - 底部导航崩溃时,片段之间更改

一切都是正确的,直到我发现如果我点击过快的底部导航中的碎片项目,它会崩溃的应用程序,而它正在做片段上的事务。它只发生当我点击该片段之间和其他更多的其他4.

所以我的问题是,有无论如何我可以处理这个问题?就像我点击底部导航中的另一个项目一样,最后一个项目的过渡将停止?如果是的话如何?

+0

你可以发布您的代码? –

+1

你可以发布你的堆栈跟踪吗? –

+0

我建议你在活动上使用加载器,并且在数据加载之前不要关闭它。这将防止任何人在加载数据时切换选项卡。希望这可以帮助。 –

回答

2

据我所知(很少有信息),这个问题很可能是碎片被破坏(当代码逻辑尝试连接到服务器并返回json数据到应用程序)和你试图访问被破坏的片段元素(或者项目,在这里是列表视图,用接收的数据填充它)。

在你的每个片段中,在接收到json数据之后,在做其他事情之前,检查片段是否仍然可见并附加到活动上,并且活动没有被破坏。

// Check the activity is not destroyed and the 
// fragment is still connected to the activity 
if (getActivity() != null && isAdded()) { 
    // Parse the JSON data 
    // Write to your SQL database 
    // Load the data into the list view 
} 
+0

的事情是,解决方案将工作,如果获得JSON的连接写在片段中,但在片段中唯一的事情是设置ListView R.id,为该列表视图设置适配器,然后运行数据库将值插入到列表视图中。 之后,在CustomAdapter里我运行了一些函数,每个函数都使连接更新项目中的项目值。我将用代码编辑我的帖子 –

+0

你可以发布堆栈跟踪吗? –

+0

已经发布了一个打印屏幕。在应用程序崩溃后,跟踪变得干净1s –

0

我发现,“编译“com.android.volley:凌空:1.0.0”抽射版本有这个错误,谷歌(或作出抽射人)没有更新谷歌凌空从那时起图书馆。

来解决这个问题的方法是使用非官方版本的工作: “编译“com.mcxiaoke.volley:图书馆:1.0.19”

这个版本有这个“错误”从已经凌空纠正。 对于如果有人想知道更多关于这个有来自mcxiaoke链接未来: https://github.com/mcxiaoke/android-volley

以及如何使用它的链接: https://www.thorntech.com/2016/03/parsing-json-android-using-volley-library/