Android 对话框导致应用程序崩溃。

Android 对话框导致应用程序崩溃。,android,mysql,json,Android,Mysql,Json,开始之前 首先,让我先说这是我的第一个Android应用程序,我对此一无所知。因此,如果有任何方法是愚蠢的或不值得的努力,请让我知道 问题 我正在构建一个与MySQL数据库相关联的应用程序,该数据库位于web服务器世界的某个web服务器上。此应用程序扫描是我们附加到所有资产上的条形码,这些条形码链接到一个资产登记簿,其中包含该资产的所有详细信息。数据将作为JSON响应发送 我正在一件一件地做这个应用程序。由于本指南,我已经完成了扫描仪部分。但是,我现在想显示一个对话框窗口(主要是因为我不知道如何

开始之前

首先,让我先说这是我的第一个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();
            }
        }
    }
};
问题

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

  • 让应用程序切换到新的“页面”以显示数据会更容易吗?如果是这样的话,我会怎么做(一个教程或者一些可能有用的东西)
  • 在上面的代码中我做错了什么
  • 您需要一个
    活动
    上下文来显示对话框<代码>getBaseContext()几乎总是使用错误的上下文。

    更改此选项:

    final Dialog dialog = new Dialog(getBaseContext());
    
    为此:

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

    你只需把你的班名写在这里

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

    在您的活动中是否包含该代码,然后将YourActivityName.this作为上下文

    将此更改为:

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

    您可以使用:

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

    如何获取活动上下文?@DarkRanger是活动中的代码,然后给出ActivityName。这是上下文。@RaJeNdRa,是的,它在我的活动中。我现在就来试试。应用程序也不是用于对话框的正确上下文。
    final Dialog dialog = new Dialog(YourActivityName.this);
    
    final Dialog dialog = new Dialog(getApplicationContext());