Android開發學習日誌(四)

來源:互聯網
上載者:User

  接上一篇,我們就來最佳化一下上一篇中的計算機。我們回過頭來看看我們已經實現的App,和一個成熟的App相比我們缺少了什麼。最基本就應該是菜單了吧,下面就說一下菜單。

  之前我們講過,在MainActivity中我們重寫了兩個方法,onCreate和onCreateOptionsMenu,onCreateOptionsMenu就是建立菜單的方法。和控制項一樣,菜單的建立也有使用xml的描述語言(布局檔案)和用java代碼建立兩種方法,我們看到自動產生的onCreateOptionsMenu方法有這樣一句:getMenuInflater().inflate(R.menu.activity_main, menu);這個就是把布局檔案中定義的菜單載入到當前Activity的菜單一實例中。既然知道了是布局檔案來定義菜單的,那麼我們就開啟/Calculator/res/menu/activity_main.xml這個菜單布局檔案來看看。裡面應該僅有下面的代碼:

1 <menu xmlns:android="http://schemas.android.com/apk/res/android">2     <item android:id="@+id/menu_settings"3         android:title="@string/menu_settings"4         android:orderInCategory="100"5         android:showAsAction="never" />6 </menu>

當然,我們運行我們的程式的時候按menu鍵,菜單也應該只有一個setting項,點擊之後沒有任何反應,因為我們還沒有為菜單添加事件監聽處理常式。

下面我們修改一下菜單,我們把setting項改為About,用來顯示應用的相關資訊,再添加一個退出的菜單,並且為菜單添加事件監聽。

 

1 <menu xmlns:android="http://schemas.android.com/apk/res/android">2     <item android:id="@+id/menu_about"3         android:title="@string/menu_about"4         android:orderInCategory="100"5         android:showAsAction="never" />6     <item android:id="@+id/menu_exit" android:orderInCategory="101" android:title="@string/menu_exit" android:showAsAction="never"></item>7 </menu>

 

這裡說一句:菜單基本上分為三類,選項菜單(optinosMenu),操作功能表(ContextMenu),子功能表(subMenu),選項菜單就是我們按了menu鍵之後出現的菜單,也就是上面我們正在添加的菜單,選項菜單是以Activity為單位的,所以我們添加選項菜單的處理常式非常簡單,只需要重寫Activity中的onOptionsItemSelected方法就可以了。顧名思義,該方法就是當菜單被點擊時調用的方法。其參數是被點擊功能表項目的執行個體。

 1     @Override 2     public boolean onOptionsItemSelected(MenuItem item) { 3         // 貌似沒什麼用,現在可加可不加, 不過不能保證以後google不會擴充基類中的代碼 4         super.onOptionsItemSelected(item); 5  6         switch (item.getItemId()) { 7         case R.id.menu_about: 8             this.createAlertDialog(); 9             break;10 11         case R.id.menu_exit:12             finish();13             break;14         }15 16         return false;17     }18 19     /**20      * 建立About對話方塊21      */22     private void createAlertDialog() {23         Dialog aboutDialog = new AlertDialog.Builder(this).setTitle("About")24                 .setPositiveButton("OK", new DialogInterface.OnClickListener() {25                     public void onClick(DialogInterface dialog, int which) {26                         dialog.cancel();27                     }28                 }).setMessage("Calculator V1.0\r\nAuthor: Null Pointer\r\nInstruction: ......").create();29         aboutDialog.show();30     }

 

 顯示About資訊這裡使用了AlertDialog,顧名思義就是彈窗,使用安卓系統的朋友應該是經常見到的。

當我們點擊文字框時,系統的IME還是會彈出來,使用者體驗不是很好,我們把IME屏蔽。其實就是EditText的屬性,加上這句就行了:inputText.setInputType(InputType.TYPE_NULL);

結束。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.