码迷,mamicode.com
首页 > 其他好文 > 详细

ActivityGroup打开空文件夹焦点问题及返回键问题

时间:2014-08-07 17:58:20      阅读:145      评论:0      收藏:0      [点我收藏+]

标签: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 {
@Override
public 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打开空文件夹焦点问题及返回键问题,布布扣,bubuko.com

ActivityGroup打开空文件夹焦点问题及返回键问题

标签:android   style   blog   http   color   os   io   strong   

原文地址:http://www.cnblogs.com/huamaoenjoy/p/3897358.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!