Androidの勉強
久々の日記で、しかも今年最初の日記。
今年は、Androidの勉強をやろうと思ってて、先日
![初めてのAndroid 第3版 初めてのAndroid 第3版](https://images-fe.ssl-images-amazon.com/images/I/41mH5o0oUML._SL160_.jpg)
- 作者: Ed Burnette,日本Androidの会(監訳),長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/01/27
- メディア: 大型本
- 購入: 2人 クリック: 486回
- この商品を含むブログ (17件) を見る
最初の方のサンプルで、昨日はAboutボックスの実装でつまづいた。
public class Sudoku extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); View aboutButton = findViewById(R.id.about_button); aboutButton.setOnClickListener(this); }
と実装しろ書いてあったけど、そのままだと、コンパイルエラー。
View | Android Developers
をみると、引数の変数は View.OnClickListener じゃないとダメって書いてある。
Eclipseの訂正機能が言うには、Castせいって出てたんで、Activityクラスの
サブクラスに View.OnClickListener があるんだなんて思って、若干違和感を感じつつも
実行してみるとClassCastExcption…。
View.OnClickListener | Android Developers
を見ると、View.OnClickListenerの親クラスがActivityだなんて一言も書いてない。
ここで、小一時間ほど悩んだ後に、よく見ると View.OnClickListener はインターフェースってことにようやく気づく。
なので、以下のようにして、ようやく解決
public class Sudoku extends Activity implements OnClickListener{ /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); View aboutButton = findViewById(R.id.about_button); aboutButton.setOnClickListener(this); } public void onClick(View v){ .... }
普段、コーディングしないから、こんな事に気づくのに時間がかかってしまった
自分に反省とスキルの低下をリアルに実感。
ついでに言うと、該当のページの次のページに、ちゃんと言葉で書いてあって
サンプルプログラムのクラス定義の部分もimplementsが追記してあったのに、
この記事を書いてるときに気づいた…。
ちゃんと読めよ、俺。