Menuメニューのデザインテクニック
コードは次のとおりです.
public class MenuActivity extends Activity {
private static final int ADD_ID = Menu.FIRST;
private static final int DELETE_ID = Menu.FIRST + 1;
private static final int EXIT_ID = Menu.FIRST + 2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
//
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, ADD_ID, 0, " ");
menu.add(0, DELETE_ID, 1, " ");
menu.add(0, EXIT_ID, 2, " ");
return true;
}
//
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case ADD_ID:
setTitle(" ");
break;
case DELETE_ID:
setTitle(" ");
break;
case EXIT_ID:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
}
上のコードを研究する:最初からフレームワークはonCreate()関数を逆呼び出し、onCreateOptionsMenuも呼ぶ.「追加メニュー」を選択すると、フレームワークはonOptionsItemSelected()関数を逆コールします.フレームワークは主役で、MenuActivity類の知識が呼び出される脇役で、複雑な制御ロジックはフレームワークに隠されているので、プログラムコードは簡単ではっきりしています.
onCreate()関数を呼び出すと、この関数はまず親ActivityのonCreate()関数に向かって呼び出し、親のプリセット動作を先に実行してからMenuActivity::onCreate()関数の追加動作を実行します.
1、なぜサブクラスMenuActivityのonCreate()が親クラスのonCreate()関数を順方向に呼び出すのですか?
フレームワークの関数(Activity::onCreate()ではない)がMenuActivity::onCreate()関数を呼び出すと、このonCreate()関数は自分でタスク全体を完了することができず、親のプリセット関数が必要になるため、完了することができます.