java.lang.IllegalArgumentException: column '_id' does not exist contentProvider

CusorAdapter の projection には _id カラムをいれておけ.

...
static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {
    Contacts._ID,   // 無駄に入れておく
    Contacts.DISPLAY_NAME,
    Contacts.CONTACT_STATUS,
    Contacts.CONTACT_PRESENCE,
    Contacts.PHOTO_ID,
    Contacts.LOOKUP_KEY,
};

public Loader<Cursor> onCreateLoader(int id, Bundle args) {
    // ...
    return new CursorLoader(getActivity(), baseUri,
            CONTACTS_SUMMARY_PROJECTION, select, null,
            Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
}
...

listview - Android column '_id' does not exist? - Stack Overflow


Material Design のパレット色を決めるときの簡単な方針づけ

これ便利ですね.

Material Design Color Palette Generator - Material Palette

Material_Design_Color_Palette_Generator_-_Material_Palette

触っていると大体こんな感じ.

1. 最初のクリックは, Primary color.
2. Primary color から Dark/Light を作成.
3. 2つめのクリックは, Accent color.
4. Textの Primary/Secondary は固定.

分かりやすく書くと

DARK PRIMARY

PRIMARY *1

LIGHT PRIMARY

ACCENT *3

PRIMARY TEXT #212121
SECONDARY TEXT #727272
DIVIDER COLOR #B6B6B6

ベースとなる19色はそれぞれ濃淡があり
HEXな記号は, Google のサイトにまとまっている.

Color_-_Style_-_Google_design_guidelines

Color - Style - Google design guidelines

ここを見ると, 濃淡に関してこんな例が上がっているのでそのまま鵜呑み.

Color_-_Style_-_Google_design_guidelines

- PRIMARY は 500.
- それから派生する DARK は 700.
- 同じく LIGHT は 100.
- ACCENT(SECONDARY) は A200.
- その DARK/LIGHT はそれぞれ A400/A100

こうなる.

DARK PRIMARY(700)

PRIMARY(500) *

LIGHT PRIMARY(100)

DARK SECONDARY(A400)

SECONDARY(ACCENT)(A200) *

LIGHT SECONDARY(A100)

PRIMARY TEXT #212121
SECONDARY TEXT #727272
DIVIDER COLOR #B6B6B6

PRIMARY と SECONDARY(ACCENT) の2色を決めると, 画面を構成する9色が決まる.

500 とか A200 とかをHEX記号にするには, 上記Googleのリファレンスをみたり,

または, こんなサイトもある.

Material_UI___Material_Design___Material_UI_Colors

Material UI | Material Design | Material UI Colors

これ, もう全部 color.xml に登録しておいたら, どうなのか.

AndroidStudioなら実際の色もGUI上で確認できるし.

color_xml

こんなアプリがあって, コードもGitHub上で公開していますので color.xml いただいてます.

Material_Design_Color_Palettes_-_Android_Apps_on_Google_Play

Material Design Color Palettes - Android Apps on Google Play

Android_Material_Design_Colours

Android Material Design Colours

MaterialTheme のカラーname に合わせるとこんなかんじになるのかな.

color_xml_Project_

(おしまい)


通知バーに通知されるアプリの自己主張がうざい場合の対処法

なんとなく扱っていたのが

上部通知バーに表示されるアイコンやメッセージの通知.

最近のアプリは通知が頻繁で自己主張が激しいのですこし整理.

いまさらか.

それは「かわいい娘は最近の男は積極的だよねと言い、普通の娘は最近の男は消極的だよねと言い、ブスな娘は最近の男はホント草食系だよねと言っているみたいです。この法則によると男が草食系になってるのではなく、女にブスが増えたのではと思います」という内容だった。

【話題】小木「草食系男子は増えてない。ブスの発言力が増してきただけ」

まず, 通知バーにはそのアプリ側から通知を表示させているので,

「そのアプリの設定で通知を非表示にする」という方法.

例えば, LINEなら「設定」-「通知設定」ですよね.

20150111-231435

20150111-231447

GooglePlayStoreなら「設定」画面を開いて以下の画面から.

20150111-232218

LINEアプリやGooglePlayStoreアプリは,

優しく「通知設定」という機能があるのでいいですが,

そんな機能がないアプリもたくさんあります.

その場合は, 「OSの設定でそのアプリからの通知を非表示」させます.

端末の「設定」-「アプリ」からそのアプリを選択するか,

または, 通知が表示されたときに通知バーのその表示を長押しして

以下のような画面を表示させて端末のOS設定から非表示にします.

20150111-232518

アプリによっては, ここからも非通知にできないアプリがあったりしますが,

大体はいけます.

あと, 通知バーを使ったアプリの履歴一覧を表示する方法もありますので

ここからもタップでこの画面にいけます.

通知バーを利用したアプリの履歴を確認する手順(アプリ不要)

20150111-233322

20150111-233424

微妙に端末よってちがったりするけど, OS 4.1 (4.0?)以降ならこれがOSデフォルト.

まとめ

通知バーの通知がうざいアプリがある場合

1. そのアプリ内の設定で非表示にする.
2. OSの設定で非表示にする.
3. それでもダメならアンインストールする.

しかし, スマホとか「説明書などをきちんと読む」てな習慣, 無くなったよねぇ~.