【发布时间】:2025-12-06 05:30:02
【问题描述】:
我的应用使用 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() 并且屏幕在这些调用中保持空白。 有人吗?
【问题讨论】:
标签: android android-intent custom-component start-activity