【问题标题】:DialogBox causes app to crash.DialogBox 导致应用程序崩溃。
【发布时间】:2014-05-03 07:26:30
【问题描述】:

开始之前

首先,让我先说这是我的第一个 Android 应用程序,我一无所知。因此,如果有任何愚蠢或不值得努力的方法,请告诉我。

问题

我正在构建一个与 MySQL 数据库相关联的应用程序,该数据库托管在 Web 服务器世界某处的 Web 服务器上。此应用程序扫描是我们附加到所有资产的条形码,这些条形码链接到包含该资产所有详细信息的资产登记册。数据将作为 JSON 响应发送。

我正在一块一块地做这个应用程序。感谢本指南,我已经完成了扫描仪部分。但是,我现在想显示一个包含该资产信息的对话框窗口(主要是因为我不知道如何让应用程序移动到新窗口)。目前,我正在努力打开对话框。一旦完成扫描,应用程序就会崩溃。

代码

如果我没有对话框,这部分代码会运行,但如果我有,则会崩溃。

PreviewCallback previewCb = new PreviewCallback() {
    public void onPreviewFrame(byte[] data, Camera camera) {
        Camera.Parameters parameters = camera.getParameters();
        Size size = parameters.getPreviewSize();

        Image barcode = new Image(size.width, size.height, "Y800");
        barcode.setData(data);

        int result = scanner.scanImage(barcode);

        if (result != 0) {
            previewing = false;
            mCamera.setPreviewCallback(null);
            mCamera.stopPreview();

            SymbolSet syms = scanner.getResults();
            for (Symbol sym : syms) {
                scanText.setText("barcode result " + sym.getData());
                barcodeScanned = true;

                final Dialog dialog = new Dialog(getBaseContext());
                dialog.setContentView(R.layout.custom);
                dialog.setTitle("Asset Details");
                TextView text = (TextView) dialog.findViewById(R.id.text);
                text.setText("Details to go here with the image");
                ImageView image = (ImageView) dialog.findViewById(R.id.image);
                image.setImageResource(R.drawable.ic_launcher);

                Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
                // if button is clicked, close the custom dialog
                dialogButton.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        dialog.dismiss();
                    }
                });
            dialog.show();
            }
        }
    }
};

问题

我显然做错了什么,但我不知道是什么。所以这是一个两部分的问题:

  1. 让应用程序切换到新的“页面”来显示数据是否更容易?如果是这样,我将如何做到这一点(教程或其他东西可能会有所帮助)?
  2. 我在上面的代码中做错了什么?

【问题讨论】:

    标签: android mysql json


    【解决方案1】:
    final Dialog dialog = new Dialog(getBaseContext());
    

    您需要一个 Activity 上下文来显示对话框。无论如何,getBaseContext() 几乎总是使用错误的上下文。

    【讨论】:

    • 如何获取活动上下文?
    • @DarkRanger 是您的 Activity 中的代码,然后将 YourActivityName.this 作为上下文。
    • @RaJeNdRa,是的,它在我的活动中。我现在就试试。
    【解决方案2】:

    您的 Activity 中是否有该代码,然后将 YourActivityName.this 作为上下文。

    更改自:

    final Dialog dialog = new Dialog(getBaseContext());
    

    final Dialog dialog = new Dialog(YourActivityName.this);
    

    【讨论】:

      【解决方案3】:

      改变这个:

      final Dialog dialog = new Dialog(getBaseContext());
      

      到这里:

      final Dialog dialog = new Dialog(YourACtivityName.this);
      

      【讨论】:

        【解决方案4】:

        您只需将您的 class_name.this 放在这里

        final Dialog dialog = new Dialog(class_name.this);
        

        【讨论】:

          【解决方案5】:

          你可以使用:

          final Dialog dialog = new Dialog(getApplicationContext());
          

          【讨论】:

          • 应用程序也是不正确的上下文,不能与对话框一起使用。
          猜你喜欢
          • 1970-01-01
          • 2015-10-21
          • 2016-06-04
          • 2011-08-24
          • 1970-01-01
          • 1970-01-01
          • 2023-04-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多