Android程式ToDoList增加配置項頁面

來源:互聯網
上載者:User

 
 
本文要做的事情就是在前面做的簡單的ToDoList程式上增加一個配置項頁面(Reference)。這個Reference頁面也非常簡單:

 

這個ToDoList現在有兩個頁面,首頁面能填寫待辦事項,然後manu鍵彈出可以跳轉到Reference頁面,在Reference頁面只有一個checkbox,來給使用者確認是否要本地儲存(具體的本機存放區的功能沒有具體實現),Reference頁面還有兩個按鈕,儲存和返回。點擊儲存按鈕,程式會儲存使用者是否已經選定了本地儲存,點擊返回按鈕,頁面會跳轉到ToDoList頁面。

在這個程式中主要是有幾個地方需要處理

1 如何在兩個Activity中進行切換
這是兩個頁面,所以我們首先會想到需要兩個layout檔案,於是我們建立了一個res/layout/preferences.xml,在這個layout中定義好了一個checkbox和兩個按鈕。現在的問題是當我點擊main.xml中的manu按鈕的時候,它是會觸發onOptionsItemSelected事件的,所以我們需要在這個事件中觸發reference頁面。這個如何做呢?

大致是有兩種方法:

1 在ToDoListActivity中調用setContentView來觸發preferences.xml的展現。

2 重新建立一個Activity類Reference,ToDoListActivity中使用Intent觸發Reference的啟動,繪製等功能。

這兩種方法有什麼不同呢?

第一種方法相當於html中使用js來讓不同的div的意思。它的好處就是簡單,對於簡單的邏輯和頁面完全可以這麼做。它的缺點也顯而易見,等於是一個Activity控制多個layout,那麼在代碼層面,會是所有的邏輯都存放在一個類中,對於代碼的易用性和維護性都是很大的損失。對於我們這個應用,我們選擇第二種方法。

所以我們的onOptionsItemSelected事件代碼如下:

  public boolean onOptionsItemSelected(MenuItem item) {
 switch (item.getItemId()) {
 case R.id.manu_reference:
       Intent intent = new Intent();
       intent.setClass( this, Reference. class);
       startActivity(intent);
 }
 return true;
}
當我在manu中觸發的item是manu_reference(這個已經在配置中設定了id),那麼我就啟動我需要的Activity。

2 Intent和Activity
Android應用程式的三種核心的組件:Activity,Service, Brocast Receiver。這三種組件互相或者內部進行互動的訊息就叫做Intent。比如在我們這個程式中,就是兩個Activity需要進行互動,這個時候就需要使用到了Intent了。

Intent有三種用法:

傳遞給Activity:startActivity(Intent), startActivityForResult()

傳遞給Service:startService(Intent), bindService()

傳遞給Broadcast:sendBroadcast(), sendOrderedBroadcast(), sendStickyBroadcast()

在這個例子中,除了從ToDoListActivity跳到Reference,也有從Reference跳到ToDoListActivity(點擊返回按鈕)。

  Button cancelReference = (Button)findViewById(R.id. cancel);
           cancelReference.setOnClickListener( new View.OnClickListener() {
                 
                 @Override
                 public void onClick(View v) {
                     Intent intent = new Intent();
                 intent.setClass(Reference.this, ToDoListActivity.class);
                startActivity( intent);
                }
           });
3 配置項儲存
關於配置項儲存這裡使用的是SharePreferences。SharePreferences提供了一個介面讓你能儲存和擷取持久化的key-value資料。你可以持久化的資料類型有:boolean,float,int,long,string。

簡單來說:

建立對象使用方法:
getSharePreferences()

getPreferences()

寫資料使用方法:
1 使用edit()擷取寫控制代碼

2 調用putXXXX()方法

3 調用commit

讀資料使用方法:
getXXX()

在這個例子中有這樣用到:

  final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
            boolean isSaveLocal = prefs.getBoolean( IS_SAVE_LOCAL, false);
 
...
 
Editor editor = prefs.edit();
                     editor.putBoolean( IS_SAVE_LOCAL, isChecked);
                     editor.commit();

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.