在活動中建立選單
要定義自己的選單,請在專案的 res/menu/
目錄中建立一個 XML 檔案,並使用以下元素構建選單:
<menu>
:定義一個選單,它包含所有選單項。<item>
:建立一個 MenuItem,它表示選單中的單個專案。我們還可以建立巢狀元素以建立子選單。
步驟 1:
建立你自己的 xml 檔案,如下所示:
在 res/menu/main_menu.xml
:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/aboutMenu"
android:title="About" />
<item
android:id="@+id/helpMenu"
android:title="Help" />
<item
android:id="@+id/signOutMenu"
android:title="Sign Out" />
</menu>
第 2 步:
要指定選項選單,請覆蓋活動中的 onCreateOptionsMenu()
。
在此方法中,你可以膨脹選單資源(在 XML 檔案中定義,即 res/menu/main_menu.xml
)
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
return true;
}
當使用者從選項選單中選擇一個專案時,系統將呼叫你的活動的重寫 onOptionsItemSelected()
方法。
- 此方法傳遞所選的 MenuItem。
- 你可以通過呼叫
getItemId()
來識別該專案,getItemId()
返回選單項的唯一 ID(由選單資源中的android:id attribute
定義 -res/menu/main_menu.xml
)* /
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.aboutMenu:
Log.d(TAG, "Clicked on About!");
// Code for About goes here
return true;
case R.id.helpMenu:
Log.d(TAG, "Clicked on Help!");
// Code for Help goes here
return true;
case R.id.signOutMenu:
Log.d(TAG, "Clicked on Sign Out!");
// SignOut method call goes here
return true;
default:
return super.onOptionsItemSelected(item);
}
}
包起來!
你的 Activity
程式碼應如下所示:
public class MainActivity extends AppCompatActivity {
private static final String TAG = "mytag";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.aboutMenu:
Log.d(TAG, "Clicked on About!");
// Code for About goes here
return true;
case R.id.helpMenu:
Log.d(TAG, "Clicked on Help!");
// Code for Help goes here
return true;
case R.id.signOutMenu:
Log.d(TAG, "User signed out");
// SignOut method call goes here
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}