setContentView(R.layout.activity_main)vs getMenuInflater()。inflate(R.menu.activity_main,menu)

时间:2013-01-04 19:19:00

标签: java android inflate

为什么我必须告诉我的活动它的布局应该是两次?

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); // <--
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu); // <--
    return true;
}

这两种方法有什么区别?我什么时候应该使用一个,什么时候使用另一个?

2 个答案:

答案 0 :(得分:9)

它们是两个不同的东西。这些名字告诉你。 R.layout.activity_main是您的布局,R.menu.activity_main适用于菜单

setContentView()设置活动的布局。它包括Buttons,TextViews等。

当您按下菜单键时,

onCreateOptionsMenu()会显示您看到的菜单,或者它会在Android 3.0 +上填充ActionBar。

他们完成了两件完全不同的事情。通常需要setContentView()(除非您有空Activity),onCreateOptionsMenu()是可选的,具体取决于您是否需要显示更多选项。

答案 1 :(得分:0)

gen文件夹里面的java文件会有定义的布局,ID和菜单静态类。你会从那里得到这个想法。