2014年1月9日 星期四

[Android] Android training速記-Adding Action Buttons

1. 新建res/menu/main_activity_actions.xml, 每一個想增加的buttom加入item→實作時加在menu.xml就成功了
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          android:showAsAction="ifRoom" />
2. follow XML裡的 @drawable/ , 圖檔存放在 res/drawable/ directory
3. Android 2.1以前, the showAsAction屬性不用 android: , 用APP名取代


menu/main.xml加入
xmlns:識別字="http://schemas.android.com/apk/res-auto"

而每個 item 的最後一列用
識別字:showAsAction="ifRoom"→ 雖說是舊版才要用, Nexus7 API4.3實作後才成功顯示icon, 而不是在menu裡
<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
    <!-- Search, should appear as action button -->
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          yourapp:showAsAction="ifRoom"  />
    ...</menu>
4. 加入Action Buttons的程式碼, 確定按鍵是否被按下

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle presses on the action bar items
    switch (item.getItemId()) {
        case R.id.action_search:
            openSearch();
            return true;
        case R.id.action_settings:
            openSettings();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
5. action_search出現錯誤?→重建一單純範例成功

6. Android 4.1以上 (API level 16), up鍵根據activity's parent in the manifest導航, 不用額外設定up鍵event

7.  → Main.Activity加入以下程式碼, 加入按鈕後行為:
→ 順便運用Toast訊息

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    // Handle presses on the action bar items
    switch (item.getItemId())
    {
        case R.id.action_search:
            openSearch();
            return true;
        case R.id.action_edit:
            openEdit();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
  
public void openSearch()
{
    Toast.makeText(this, "按了 尋找 鈕", Toast.LENGTH_LONG).show();
}
  
public void openEdit()
{
    Toast.makeText(this, "按了 Edit 鈕", Toast.LENGTH_LONG).show();
}

8. R.id.xxxx出現錯誤時, 回到extends Activity並把以下程式碼刪掉, 再重新key R.id.xxxxx, 用回extends ActionBarActivity

沒有留言:

張貼留言