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()関数は自分でタスク全体を完了することができず、親のプリセット関数が必要になるため、完了することができます.