質問 1: 残念ながら、あなたが最も直感的だとおっしゃるアプリは、Android で最も使用されていないアプリです。私が理解しているように、UI (XML) と計算機能 (Java クラス ファイル) を分離する必要があります。また、デバッグも容易になります。実際、このように読み、Android imo について考える方がはるかに簡単です。
質問 2: 主に使用されるのは #2 と #3 の 2 つだと思います。例として Button clickButton を使用します。
2
匿名クラスの形式です。
Button clickButton = (Button) findViewById(R.id.clickButton);
clickButton.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
***Do what you want with the click here***
}
});
これは、ボタン変数が findViewById で設定された場所のすぐ隣に onClick メソッドがあるため、私のお気に入りです。この clickButton ボタン ビューを処理するすべてのものがここに配置されていることは、非常にきちんと整理されているように見えます。
私の同僚がコメントしている短所は、onclickリスナーを必要とする多くのビューがあると想像することです。onCreate の長さが非常に長くなることがわかります。そのため、彼が使用するのが好きな理由:
3
5 つの clickButtons があるとします。
アクティビティ/フラグメントが OnClickListener を実装していることを確認してください
// in OnCreate
Button mClickButton1 = (Button)findViewById(R.id.clickButton1);
mClickButton1.setOnClickListener(this);
Button mClickButton2 = (Button)findViewById(R.id.clickButton2);
mClickButton2.setOnClickListener(this);
Button mClickButton3 = (Button)findViewById(R.id.clickButton3);
mClickButton3.setOnClickListener(this);
Button mClickButton4 = (Button)findViewById(R.id.clickButton4);
mClickButton4.setOnClickListener(this);
Button mClickButton5 = (Button)findViewById(R.id.clickButton5);
mClickButton5.setOnClickListener(this);
// somewhere else in your code
public void onClick(View v) {
switch (v.getId()) {
case R.id.clickButton1: {
// do something for button 1 click
break;
}
case R.id.clickButton2: {
// do something for button 2 click
break;
}
//.... etc
}
}
すべての onClick 計算が 1 か所で処理され、onCreate メソッドが混雑していないため、私の同僚が説明しているように、この方法は彼の目にはすっきりしています。しかし、私が見る欠点は、次のことです。
- 自分自身を見て、
- onClick メソッドで使用される onCreate に配置される可能性のあるその他のオブジェクトは、フィールドにする必要があります。
さらに詳しい情報が必要な場合はお知らせください。かなり長い質問なので、完全には答えませんでした。そして、いくつかのサイトを見つけたら、答えを拡大します。今は、経験を積んでいるだけです。