2014-03-25 209 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