2017-07-07 12 views
0

私は作成していますが、これまでアプリケーションはすべて良好でした。今日私は、私のwebserviceに到達し、jsonを返して、そのデータを自分のsqliteに挿入し、それをリストビューに表示し、データを2番目に更新するために、断片のデータを扱っていました。Android Studio - フラグメント間で変更すると下部のナビゲーションがクラッシュする

フラグメントからのアイテムがあるボトムナビゲーションであまりにも速くクリックすると、フラグメント上のトランザクションを実行している間にアプリケーションがクラッシュすることがわかりました。そのフラグメントと他の4つのうちの1つをクリックすると発生します。

私の質問は、とにかく私はこの問題に対処できますか?下のナビゲーションから別のアイテムをクリックすると、最後のアイテムからの遷移が停止しますか?もしそうなら、どのように?

+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を設定し、リストビューのアダプタを設定してからdbを実行します値をリストビューに挿入します。 その後、CustomAdapter内でいくつかの関数を実行すると、それぞれが項目内の項目値を更新する接続を行います。コード –

+0

で私の投稿を編集しますスタックトレースも投稿できますか? –

+0

はすでに印刷画面を投稿しています。アプリのクラッシュ後にトレースがきれいになっていた –

0

私は「コンパイル 『com.android.volleyことが判明:ボレー:ボレーの1.0.0』」のバージョンは、このエラーとGoogle(またはボレーをした人々は)グーグルでボレーを更新しなかったでした以来、ライブラリ。この問題を回避する方法は非公式バージョンとの仕事だった

:ライブラリ: は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/

関連する問題