android4.4_焦点不显示在刷新之前的位置上。

asyKalun 2017-09-27 11:40:09
首先上一张图:


我本身要实现的效果是,短消息来未读短信,短信图标上显示未读数量提示。

现在目前我的实现方式是:利用观察者模式监听数据库中短信数据的变化,如果来新的未读短信了,
会去执行重新刷新这个主菜单的整个界面(它执行的过程是一个图标一个图标的重新画),
这个时候会出现一个问题,界面没有刷新之前,主菜单是有默认的焦点显示,
但是刷新以后,界面焦点消失了,这个时候我通过在界面刷新完成时broadcast Received发送一个广播
让控件重新requestFocus了,这个问题是解决了,可是出现了一个新的问题到现在还不知道如何解决。

重新请求的焦点会默认在第一个图标上,这样的话离自己的预设效果不一样,感觉也不靠谱,
我的期望是:界面刷新之前焦点在那个菜单上面,刷新之后焦点还在那个菜单上面。

这里我备注一下:来未读消息界面刷新的时候,是不会oncreate或者onresume的。

贴一下自己的部分代码:
Launcher模块 oncreate方法中:
        mMmsSmsObserver = new UnreadMessageContentObserver(this, mHandler2);
mCallObserver = new MissCallContentObserver(this, mHandler2);

ContentResolver resolver = getContentResolver();
resolver.registerContentObserver(UnreadInfoUtil.MMSSMS_CONTENT_URI, true, mMmsSmsObserver);
resolver.registerContentObserver(UnreadInfoUtil.CALLS_CONTENT_URI,true,mCallObserver);


监听到未读信息后会回调该方法:
    private Handler mHandler2 = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case UPDATE_ADAPTER_FOR_HANDLER:
break;
case UnreadInfoUtil.MMSSMS_UNREAD_MESSAGE:
mModel.resetLoadedState(true,true);
mModel.startLoaderFromBackground();
break;
case UnreadInfoUtil.MISS_CALL_MESSAGE:
mModel.resetLoadedState(true,true);
mModel.startLoaderFromBackground();
break;
default:
break;

}
}
};


这个地方加载完所有的app后发送一条广播通知请求焦点:
                if (loadWorkspaceFirst) {
if (DEBUG_LOADERS) Log.d(TAG, "step 2: loading all apps");
loadAndBindAllApps();
} else {
if (DEBUG_LOADERS) Log.d(TAG, "step 2: special: loading workspace");
loadAndBindWorkspace();
}

// Restore the default thread priority after we are done loading items
synchronized (mLock) {
android.os.Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT);
}
Intent intent = new Intent();
intent.setAction(Intent.ACTION_UPDATE_FOCUS);
mContext.sendBroadcast(intent);



难道要用SharedPreferences 在刷新之前先保存一下当前焦点控件的id,在刷新之后在重新设置focus的位置?
即使这样的话,我想过我好像也实现不出来。求指点咯!
...全文
230 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
asyKalun 2017-09-30
  • 打赏
  • 举报
回复
现在论坛回复的人有点少。 只能自己搞定试试
asyKalun 2017-09-28
  • 打赏
  • 举报
回复
大神们 看过来啊 帮个忙!
asyKalun 2017-09-27
  • 打赏
  • 举报
回复
自己顶一下,大神帮忙解惑啊!!!

80,348

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧