【问题标题】:My app gets "Force close" on several devices我的应用在多台设备上“强制关闭”
【发布时间】:2010-09-06 06:28:55
【问题描述】:

有人抱怨我的应用程序在启动时获得了 FC(而其他人从未遇到过任何问题)。这是我的完整活动来源。由于它发生在我不拥有的设备上,我无法修复它。从他们告诉我的情况来看,它不起作用:摩托罗拉 Blackflip、摩托罗拉 Dext、摩托罗拉 CLIQ XT。猜猜摩托罗拉毕竟不喜欢我的应用程序......

可能是我允许 minSdkVersion="3" 吗?我在模拟器上测试了 1.5 并且运行良好...

提前感谢您的回复。

public class workit extends Activity implements OnClickListener {

 Button yay;
 Button yay0;
 Button yay1;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.main);

        yay = (Button) findViewById(R.id.gostart);
        yay.setOnClickListener(this);
        yay0 = (Button) findViewById(R.id.dontstart);
        yay0.setOnClickListener(this);
        yay1 = (Button) findViewById(R.id.exit);
        yay1.setVisibility(ImageView.GONE);


        ImageView inizio = (ImageView)findViewById(R.id.start);                                        
        inizio.setVisibility(ImageView.VISIBLE);
        inizio.setBackgroundResource(R.drawable.start);
    }

 public void onClick(View v) {
  // TODO Auto-generated method stub
     if (v == yay0) {
      finish();
  }
     if (v == yay) {
   ImageView inizio = (ImageView)findViewById(R.id.start);
   inizio.setVisibility(ImageView.GONE);
   WebView work = new WebView(this);
   setContentView(work);
   work.loadUrl("file:///android_asset/index1.html");
   work.setWebViewClient( new work()); 
   work.setBackgroundColor(0);
   work.getSettings().setBuiltInZoomControls(true);
   work.getSettings().setDefaultZoom(ZoomDensity.FAR);
  }
     if (v == yay1) {
      finish();
  }
    }
    private class work extends WebViewClient {     
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url.contains("exit.html")) {
             // TODO: do what you have to do
             finish();
            }
            view.loadUrl(url);
            return true;
        }
    } 
}

【问题讨论】:

  • 你应该看看这个崩溃报告库,我使用它,它运行良好,将崩溃报告发送到谷歌电子表格。所以你不依赖市场错误报告或任何分钟。操作系统版本。 code.google.com/p/acra
  • 谢谢,我去看看,回来报告结果。
  • 报告令人惊叹。我在那里发现了很多有趣的统计数据!感谢您分享这个!

标签: android onclick webview imageview


【解决方案1】:

最好的办法是让某人向您发送 LogCollector 输出(根据我的经验,用户很乐意为您提供信息以调试问题。那里有一些非常酷的人)。这应该会给你一个调用堆栈,以及你触发了什么样的异常(NullPointerException 等)的信息。

接下来 - 您构建应用的依据是什么?您的项目结构中的某处应该有一个“Android x.x”条目。如果您正在构建应该在 Android 1.5 上运行的东西,那么请确保您实际上是针对 1.5 构建的。如果需要,您可以针对 2.0 进行构建,但如果您需要使用 2.0 特定的功能,则必须正确封装它们。 (这个在stackoverflow上已经详细解释了好几次了。)

在一个不相关的注释上 - 我建议提供更多信息的变量名称。 “yay0”对于有一段时间没有与代码密切合作的人来说没有任何意义。

【讨论】:

  • 谢谢你的回答,我的目标其实是2.2。您会建议用户使用哪种方式向我发送 LogCollector 输出?我应该如何引导他们完成?
  • 请他们安装 LogCollector 应用程序并在您的应用程序崩溃后立即运行它。它会自动准备一封他们可以发送给您的邮件。至于构建版本 - 只是为了好玩,尝试将其设置为 1.5 并查看它是否仍然可以编译。以 2.2 为目标是可以的,因此您可以支持在 SD 卡上安装,但同样 - 如果您想支持 1.5 设备,请确保不要使用 1.6+ API 调用。
  • 这就是答案!! work.getSettings().setDefaultZoom(ZoomDensity.FAR);不能在 1.5 和 1.6 中编译。现在我只需要找到一种方法让我的 webview 在没有 ZoomDensity 的情况下放大到 FAR。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-29
  • 2015-04-09
  • 2014-07-17
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多