Android Studioで”cannot resolve symbol R”のエラー

Android StudioでRが解決できないエラーがいつの間にか出てました
見当違いなところを見てたので結果をメモ

間違えてたのはstring.xmlでした..

これを

<string name="error_divide_by_zero">can't divide by zero</string>

こう

<string name="error_divide_by_zero">can\'t divide by zero</string>

変えたら直りました
XML内でそのままシングルクオートを使ったらだめですね..

Androidの style=”?android:buttonBarButtonStyle”の指定

よく使われてる指定で

<Button style="?android:buttonBarButtonStyle"
    android:id="@+id/cancel_button"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="@string/cancel" />

といったところの、 style=”?android:buttonBarButtonStyle”がなんなのか..
これはテーマを参照してます

AndroidManifest.xmlにテーマが指定してあるので

<application android:label="@string/app_name"
    android:icon="@drawable/ic_launcher"
    android:theme="@style/Theme.Sample"
    android:allowBackup="true">

android:themeの値をCTRL + Bで遡っていけば、何をしてるか見れます

ActionBarでなくツールバーを使っている時の前に戻るボタンを作る

Android StudioでActionBarでなくツールバーを使ったときの前に戻るボタンの作り方のメモ

メインのActivity.javaで

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

な感じでツールバーをセットしてると

import android.support.v7.app.ActionBar;
/* ... */
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sample);

    ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
}

とActionBarを取れます、getSupportActionBar()がみそです

あとは戻るをタップした時の処理を書く

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
        finish();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

これでできました

Android 6.0 (Marshmallow)でPublicディレクトリに書き込めない

Android 6.0 (Marshmallow / マシュマロ)の実機でデバッグしてたらPublicディレクトリに書き込めませんでした
Lolipopだったら問題なかったのに..

調べてみたらAndroid 6からはパーミッションが変わってるからでした

Working with System Permissions | Android Developers
をみて対応した書き方をするかですが、手っ取り早くtarget SDK versionを下げました

build.gradleファイルを開いて

targetSdkVersion 22

に変更
これでコンパイルしなおせば、とりあえず書き込めるようになりました
targetSdkVersion 23がAndroid 6です
正しい対応はもうちょっとAndroid 6 がシェア出てからにします

参考)
Androidアプリで書きだしたファイルがPCで見えない
Android 6(M) permission issue (create directory not working) – Stack Overflow