Kotlinで継承可能なクラスを定義するには

最近業務でもKotlinに触れる機会が多いです。
コードを書く時に通常のクラスを定義する事が多くて、継承可能なクラスを書くことがあまりないので、Kotlinで継承可能なクラスにする場合のメモ。

class ParentActivity : AppCompatActivity() {
        ....実装
}

上記のようなクラスを元に、各クラスを定義しようとすると、ビルドエラーになります。
理由はfinal Classとして扱われるから。
継承可能なクラスにしたい場合は、以下のように open と付ける必要がありました。

open class ParentActivity : AppCompatActivity() {
        ....実装
}

けど、これだと警告が取り除けない。Javaのときにはなかった変更点として、抽象クラスならきちんと abstract classとして宣言が必要でした。

abstract class ParentActivity : AppCompatActivity() {
        ....実装
}

こうすると、明示していなくても open扱いとなる模様。
Kotlin奥が深いです。

ボタンなどのクリックイベント制御の挙動

ボタンなどのViewにはクリックイベントを設定することができます。
クリックイベントにも2種類ほどあって、
– クリックイベント(1回)
– 長押しイベント(長押し)
で、ユーザーに求めるアクションを選べるようになっています。

このイベント、OS内では呼び出し順序が決められており、
①長押しイベント
②クリックイベント
の順にコールバックメソッドが呼び出されるようになっています。

長押しイベント後にクリックイベントを呼び出さないようにするには、長押しのときの呼び出されるonLongClickメソッドで、
戻り値をtrueにすればOKです。

@Override
public boolean onLongClick(View view) {
    return true;
}

ここをfalseにしてやると、長押しのonLongClickメソッドが呼び出された後、クリックのonClickメソッドが呼び出されます。
あまり意識することはないと思いますが、一つの知見ということでまとめときます。