Android Support Library のよくあるクラッシュ その1「安全な Fragment Transaction の実行」

 

フラグメントのトランザクションはアクティビティ内で、それの追加、削除、入れ替えで利用されます。
大抵、フラグメントのトランザクションは、アクティビティの onCreate()メソッドか、ユーザ処理に反応して実行されます。

 

しかし、アクティビティが再開されるとき、フラグメントのトランザクションがコミットされている場合があります。

次のようなクラッシュです。

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord)
at android.support.v4.app.DialogFragment.show(DialogFragment)

 

フラグメントアクティビティがバックグラウンドに置かれたときは、FragmentManagerImpl の mStateSaved フラグが trueに設定されます。

このフラグは状態(state)の損失があるかどうかを確認するために利用されます。

トランザクションをコミットしようとしたときにこのフラグがtrueの場合、上記のように IllegalStateException がスローされます。

状態の損失を防ぐための onSavedInstanceState() が呼ばれた後に、フラグメントトランザクションはコミットすることができません。

このクラッシュが発生する理由のうち、状態(state)がリストアされるときにフラグが false に戻ってないときに onResume() が呼ばれていることがあります。

このようなクラッシュを防止するには、アクティビティのonResume() 内での フラグメントトランザクションのコミット避けるとよいです。

その代わりに、onResumeFragment() を使いましょう。これが適切な状態でフラグメントと対話するための推奨されるアプローチです。

Android Support Library のよくあるクラッシュ その2「AsyncTasks と Configuration 変更」 Android Support Library のよくあるクラッシュ その2「AsyncTasks と Configuration 変更」


Android Studio 0.3.1 アップデートで ウィザードから NavigationDrawer が簡単作成など

「週間地雷」などといわれてるAndroidStudioのアップデートです。

031

さまざまなBugFixが行われていますが、新規プロジェクト作成のウィザードから、GUI上でいまどきのUI「NavigationDrawer」が同梱されるテンプレートから簡単に作成できるようになっています。
(これまでは、選択肢には表示されていたが書き出しができていなかった。Mac版。)

メニューの新規ブロジェクトから「NavigationDrawer」を選択して進む、

New_Project_と_NavigationDrawer_build.gradle_-__navigationdrawer__-_NavigationDrawerProject_-____Desktop_NavigationDrawerProject__-_Android_Studio__I_O_Preview__0.3.1_1

続きを読む >>


AndroidStudio で 'com.android.tools.build:gradle:0.6.1' の人は「+」にしていいよ

以前、問題があった
「com.android.tools.build:gradle:0.6.2」

やむなく、以下のように記述していましたが。

android studio 0.3.0

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.6.1'
    }
}

 

「+」な記述にもどしてよいよと。

しれっとアナウンスしています。
続きを読む >>


今どきのUIライブラリサンプルの実装 その2 - ViewPagerIndicator

横スワイプでスライドするページャーに合わせて、下の方で、全ページに対しての現在ページの位置を「横棒」などで示してくれます。

サンプルアプリを公開しています。

ViewPagerIndicator Sample - Google Play の Android アプリ

既存のアイコンやタブ形式など、さまざまなページャーに対して実装が可能になってます。

そんなライブラリです。

screens

JakeWharton/Android-ViewPagerIndicator JakeWharton/Android-ViewPagerIndicator

実装方法は、かんたんです。

続きを読む >>


LINE等に既読をつけないで未読のまま読むアプリ「ちらみ」がマルチなSNSクライアントとなる!?

「既読」と相手に知らせずにメッセージを読むことができます。

LINE等に既読をつけないで未読のまま読むアプリ「ちらみ」_-_Google_Play_の_Android_アプリ

LINE等に既読をつけないで未読のまま読むアプリ「ちらみ」 - Google Play の Android アプリ

「LINE」「comm」「KAKAOTALK」に加え「facebook」「twitter」「skype」「Viber」に対応

いろんなメッセンジャー系のアプリやSNSメッセージに対応しているようです。

端末の「ユーザ補助」機能というのを使うようです。

Screenshot_2013-10-20-17-50-42

なんだろう、「ユーザ補助」って。

続きを読む >>