【问题标题】:set wallpaper should be this hard :(设置壁纸应该这么难:(
【发布时间】:2011-01-19 15:53:51
【问题描述】:

好的,我认为它引发了异常。不幸的是,我没有收到错误。 它加载到模拟器和我的手机上,但不会执行。它只是说,“应用程序 MyApp(进程 com.myapp)已意外停止。请重试。”然后是强制关闭按钮。 :(

这里又是我的代码:

public void onClick(DialogInterface dialog, int id) {
    try {
        MyActivity.this.setWallpaper(mContext.getDrawingCache()); 
        finish();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

在我自己的研究中,我看到有人从 getDrawingCache 获取位图并将其转换为位图?但是 view.getDrawingCache 上的文档说它已经是一个位图,并且 setWallpaper 应该设置一个位图...... 我在这里没有想法。

【问题讨论】:

  • 以后请花时间适当地格式化您问题中的代码(使用“{}”编辑器控件)。
  • 请检查并尝试理解错误,并在此处发布错误(因此异常)。由于您已经在 try-catch 中获得了所有这些,因此您的代码在一个完全不同的地方是错误的......
  • 使用logcat查看实际异常。
  • middaparka - 我写的时候它看起来像是被格式化了。当我点击发送它聚在一起。不知道为什么会这样,但请原谅我。
  • Nanne,我不太擅长理解调试器。看起来位图可能没有被传递?但我不知道为什么它不会。

标签: android exception-handling wallpaper


【解决方案1】:

什么是 mContext? getDrawingCache() 是 View 类的一个方法,只有在您第一次调用 setDrawingCacheEnabled(true) 或调用 buildDrawingCache() 时才会返回一个有效的位图。您还必须确保视图通过了布局通道,并且它的宽度和高度 > 0。

【讨论】:

  • 我之前说过 mContext 是一个视图,但这是一个错误。 mContext 是一个 ImageSwitcher 对象。你是说我必须 setDrawingCacheEnable(true)。所以我在 onTouchListener 或之前这样做?
  • 按我的方式使用它是一种好习惯,还是应该先将 MyContext.getDrawingCache() 移动到位图变量中?
  • 罗曼盖伊!我希望我能给你买一个冷的和你握手! setDrawingCacheEnabled(true) 是票!谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多