2014-03-25 77 views
1

在我们开始之前DialogBox导致应用程序崩溃。

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

问题

我构建与在Web服务器的世界Web服务器上的某个地方一个MySQL数据库中捆绑的应用程序。这个应用程序扫描是我们附加到我们所有资产上的条形码,并且这些条形码链接到具有该资产上所有细节的资产注册表。数据将作为JSON响应发送。

我正在做一件一件的应用程序。扫描仪部分我已经完成了,这要归功于本指南。但是,我现在想要显示一个对话窗口(主要是因为我不知道如何使应用程序移动到新窗口)以及该资源的信息。目前,我正在努力争取打开对话框。一旦完成扫描,应用程序崩溃。

CODE

这是一个运行,如果我没有在对话框的代码位,但崩溃,如果我这样做。

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(); 
      } 
     } 
    } 
}; 

问题

我明明做错事,但我不知道是什么。所以这是一个2部分的问题:

  1. 将应用切换到新的“页面”以显示数据会更容易吗?如果是这样,我将如何做到这一点(一个教程或一些可能的帮助)?
  2. 我在做什么错误在上面的代码?
+0

请张贴的logcat – nikis

+0

显示您的logcat – 2014-03-25 12:37:30

回答

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

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

+0

我如何获得一个活动情境? – Albert

+2

@DarkRanger您的活动中的代码是否将YourActivityName.this作为上下文。 – 2014-03-25 12:39:49

+0

@RaJeNdRa,是的,它在我的活动中。我现在就试试。 – Albert

0

更改此:

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

这样:

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

你只需在这里把你class_name.this

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

是在你的活动代码然后给YourActivityName.this作为一种语境。

更改这个来自:

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

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

您可以使用:

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

应用程序也是与对话框一起使用的不正确的上下文。 – laalto