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

 

AsyncTasksは、バックグラウンド処理を実行し、必要に応じて終了後のUIを更新することに使用されます。
AsyncTasksを使用し、コンフィギュレーションの変更を扱うことはよくあるバグとなることがあります。

Fragment は AsyncTask の実行中にその Activity から切り離され、その Activity にアクセスしようとする場合は、アプリケーションは次のようなコールスタックでクラッシュします。

java.lang.IllegalStateException: Fragment MyFragment not attached to Activity
 at android.support.v4.app.Fragment.getResources(Fragment.java:551)
 at android.support.v4.app.Fragment.getString(Fragment.java:573)

Fragment は、アプリケーションのリソースにアクセスするために Activity を必要としています。

続きを読む >>


GitHub から AndroidStudio にプロジェクトインポートする手順

 

GitHubアカウントは使わず、forkとかなし。
facebook-android-sdk のサンプルを稼働させるまで。

facebook_facebook-android-sdk

facebook/facebook-android-sdk

 

手順

1. ソースを取得、展開
2. local.properties の作成
3. settings.gradle の作成
4. build.gradle の作成
5. プロジェクトインポート
6. できあがり

順番にやっていく。

続きを読む >>


API11(Honeycomb) 以降で Fragment Transaction#commit() のタイミングが変わる件

 

クラッシュと_ANR_-Play_Developer_Console
Honycomb(API11) 以降で問題のスタックトレース。

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

 

なぜExceptionが?

Activity が保存された状態でコミットされて、それのステートの損失が確認された結果です。
onSaveInstanceState()が呼び出されたときに何が起きているのかを見てみましょう。

続きを読む >>


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'
    }
}

 

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

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