ActivityGroup開啟空檔案夾焦點問題及返回鍵問題

來源:互聯網
上載者:User

標籤:android   style   blog   http   color   os   io   strong   

ActivityGroup成功的解決了幾個activity交替切換的問題,且比Tabhost具有更強的可拓展性。

在做一款多媒體檔案瀏覽的軟體時候,遇到了如下問題:

問題一:開啟空檔案夾時,由於焦點無處附著,當前activity的onPause(),預設activity的onResume()。

開啟一個空檔案夾,子activity的adater為空白,此時子activity的焦點無處附著,運行完notifyDataSetChanged()方法之後就會走入onPause()方法,進而activity跳轉至ActivityGroup預設的activity上。ie:子activity-B顯示的是GridView,當GridView為空白的時候,焦點無法附著,自動將子activity-B執行onPause(),然後預設子activity-A執行onResume()。這樣就有了以下現象:即進入空檔案夾後,activity會跳轉至預設的子activity-A。解決這個問題的權宜方法是在容器為空白的判斷中發送一個廣播給ActivityGroup,ActivityGroup收到廣播後對其焦點重新管理,從而解決了這一問題。

雖然這樣做解決了問題,但總覺得不是很完美,有興趣的大蝦們可以一起談論討論。

 

Intent intent = new Intent();intent.setAction("android.intent.action.EMPTY_DIRCTORY");mContext.sendBroadcast(intent);

 

public class emptyDirctoryBroadcastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();       if (action.equals("android.intent.action.EMPTY_DIRCTORY")) {   if (MediaFileAdapter.tagType.equalsIgnoreCase("All files")) {showWholeView(0);creatEmptyDirectoyDialog(0);    } else if (MediaFileAdapter.tagType.equalsIgnoreCase("Picture")) {            showWholeView(1);        creatEmptyDirectoyDialog(1);     } else if (MediaFileAdapter.tagType.equalsIgnoreCase("Video")) {    showWholeView(2);     creatEmptyDirectoyDialog(2);    } else if (MediaFileAdapter.tagType.equalsIgnoreCase("Music")) {    showWholeView(3);    creatEmptyDirectoyDialog(3);    }}     }}

 

上述問題解決後帶來另一問題:

問題二:問題已解決後,焦點自動移動至左邊媒體TAG,這時雖然處於深層檔案夾,但執行返回操作後直接退出。(焦點在左邊TAG本來就應該返回鍵退出,但這樣的話就不能滿足使用者執行返回鍵返回上一檔案夾的目的)。

解決該問題的方法是:當進入空檔案夾時彈出一個dialog,提示該檔案夾下沒有此類檔案,讓使用者按鍵返回。返回後記下當前路徑作為Device的參數建立一個然後再重新開啟該路徑即可。這樣做成功的解決了進入空檔案夾能返回上一層的問題,但此時建立的device的類型為Directory,且沒有母級路徑,不能執行返回鍵。這時,複寫dispatchKeyEvent的back鍵,判斷當返回的檔案夾是device建立的(device的類型為Directory),且存在上一級目錄,此時再將母路徑作為device參數重新開啟。代碼如下:

if (mAdapter.getCurrentItem().getDevice().type().equals(Device.TYPE_DIR) && (!mAdapter.getCurrentItem().getDevice().path().equals(rootPath))) {String parentPath = MediaExplorerActivity.getParentFilePath(mAdapter.getCurrentItem().getPath());Device device = new DirectoryDevice(parentPath);AllFileExplorerActivity.mAdapter.open(device);

 

 
  • 上一篇安卓顏色秀----顏色查詢應用
  • 下一篇activityGroup怎樣讓子activity中的gridView第一項預設擷取焦點?

聯繫我們

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