このブログは毎日最低一記事更新する事を一つの目標として、自分で自分を縛っています。(1回更新を怠るとそのまま更新せずに放置しそうなので)。このためある程度記事を書きためています。最近はAndroid関連のニュースが多く、書きためた記事の中で、時間軸のあまりない記事は、後回しになってしまうのですが(プログラム関連記事に多い)この記事もかなり前に書いたものです。

本家Developerブログの方で、「UI framework changes in Android 1.6」という記事がでていますが、その中の一部Easier click listenersの省と同じ内容です。あちらの方が詳しいので日本語でざくっと読んで、本家ブログを見るのがお勧めです。

Android 1.6 Version Notesに、
New XML attribute android:onClick to specify a View’s View.OnClickListener from a layout file.
という記載があり、レイアウトファイルに、直接OnClickListerを呼べるようになったということなので早速試してみました。

レイアウトファイル

main.xmlファイル

android:onClickに、ボタンを押したときにfromLayoutFileEvent(名前は任意)というメソッドを呼ぶのを指定


<Button android:text="@+id/Button01"
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="fromLayoutFileEvent"></Button>

Activity

先ほど指定た、fromLayoutFileEventを、Activityに記載


public class Main extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void fromLayoutFileEvent(View view){
Log.v(TAG,"fromLayoutFile");
}

解説

以上で終了です。ボタンを押すと、ログが出力されます。

今までView.OnClickListenerの記載は、いつも書く事が同じで退屈な処理でした。これで少しはソースコードがすっきりするのかなとも思いますが、逆に後からみてこのメソッドどこから呼ばれているんだ??といった事にもなりかねず、きちんとしたルール化をして使っていくのが良いと思います。

うーん、VBのようなGUIでアプリを作るような事を考えて拡張でしょうか?今後に期待です。

ブログ内の関連する記事