我的应用程序使用 ES 文件资源管理器使用 com.estrongs.action.PICK_FILE 意图加载/保存文件。它进入浏览器可以完成它的工作并返回结果,但在返回主要活动时,主要活动不可见。它是专注的。当您按下编辑文本(隐藏)时,我可以使用投掷手势并打开键盘。OnActivityResult() 被调用并且处理得很好。我的 onResume、OnStop 等中没有任何代码。我在下面添加了 logcat,但您可以看到它并没有真正显示任何内容。
我不知道是否值得一提,但我也使用 SherlockActionBar。
最后,这是有趣的一点。我的活动有一个标签主机,基本上有 2 个主要视图。1 是 ListView,1 是使用 OnDraw() 的自定义视图。如果我加载一个必须在列表视图上显示的文件,一切正常。如果我为自定义视图加载文件,它将被隐藏。
请问我的致命缺陷在哪里?
意图是这样开始的
intent = new Intent("com.estrongs.action.PICK_FILE");
intent.putExtra("com.estrongs.intent.extra.TITLE", "Open");
goingtobrowser = true;
startActivityForResult(intent, REQUEST_CODE_PICK_FILE_OR_DIRECTORY);
OnActivityResult() 是这样的
if (resultCode == RESULT_OK && data != null) {
// obtain the filename
if (D)
Log.e(TAG, "++ Coming back from Browser ++");
Uri fileUri = data.getData();
if (fileUri != null) {
String filePath = fileUri.getPath();
if (filePath != null) {
//do something with the path
}
}
}
06-21 11:16:15.421: E/BTUI(12000): ++ ON START ++
06-21 11:16:15.421: D/BTUI(12000): ++ ON RESUME ++
06-21 11:16:15.571: W/KeyCharacterMap(12000): No keyboard for id -1
06-21 11:16:15.571: W/KeyCharacterMap(12000): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
06-21 11:16:15.801: D/dalvikvm(12000): GC_EXTERNAL_ALLOC freed 435K, 41% free 4138K/6983K, external 3976K/4039K, paused 29ms
06-21 11:16:15.841: D/dalvikvm(12000): GC_EXTERNAL_ALLOC freed 33K, 42% free 4105K/6983K, external 4000K/4885K, paused 27ms
06-21 11:16:19.121: E/BTUI(12000): ++ Going to Browser ++
06-21 11:16:19.171: D/BTUI(12000): ++ ON onSaveInstanceState ++
06-21 11:16:19.171: D/BTUI(12000): ++ ON PAUSE ++
06-21 11:16:19.611: D/BTUI(12000): ++ ON STOP ++
06-21 11:16:35.801: D/BTUI(12000): onActivityResult -1
06-21 11:16:41.351: E/BTUI(12000): ++ Coming back from Browser ++
06-21 11:16:42.481: E/BTUI(12000): ++ ON START ++
06-21 11:16:42.481: D/BTUI(12000): ++ ON RESUME ++
06-21 11:17:07.751: I/System.out(12000): in onFling() ::
**编辑在第一次查看更多内容后,调用自定义视图的 onDraw(),因此我在主要活动 onResume() 中放置了 customview.invalidate()。因此,当从第二个活动返回时,应该调用它并且视图无效并调用 onDraw()。它不是!我想这就是问题所在。请给点思路??
**编辑我可以摆脱黑屏的唯一方法是使整个主屏幕无效
ViewGroup vg = (ViewGroup) findViewById (R.id.main);
vg.invalidate();
在 onResume() 中。
但这对我来说不够合适,因为我需要从其他线程调用 view .invalidate() 或 view.postinvalidate() 并且这不会调用 customview.onDraw() 并且这些调用屏幕保持空白。任何人??