2017-04-18 76 views
0

我想在我的Andriod應用程序使用Visual Studio構建實現ZXing條碼掃描儀。當我嘗試點擊按鈕來掃描它時,出現此錯誤:ZXing條碼掃描器NamaReferenceException與Xamarin(視覺工作室)

System.NullReferenceException:對象引用未設置爲對象的實例 。

這是ScanActivity.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Android.App; 
using Android.Content; 
using Android.OS; 
using Android.Runtime; 
using Android.Views; 
using Android.Widget; 
using ZXing.Mobile; 

namespace Shopinator 
{ 
[Activity(Label = "ScanActivity")] 

public class ScanActivity : Activity 
{ 
    protected override void OnCreate(Bundle savedInstanceState) 
    { 
     base.OnCreate(savedInstanceState); 
     SetContentView(Resource.Layout.ScanLayout); 
     Button scanCodeSrc = FindViewById<Button>(Resource.Id.scanCode); 
     Button goBackSrc = FindViewById<Button>(Resource.Id.goBackBtn); 

     scanCodeSrc.Click += scanCodeSrc_Click; 
     goBackSrc.Click += goBackSrc_Click; 
    } 

    public async void scanCodeSrc_Click(object sender, EventArgs e) 
    { 
     MobileBarcodeScanner.Initialize(Application); 
     MobileBarcodeScanner scanner = new MobileBarcodeScanner(); 
     var result = await scanner.Scan(); 
     if (result != null) 
      Console.WriteLine("Scanned Barcode: " + result.Text); 
    } 

    private void goBackSrc_Click(object sender, EventArgs e) 
    { 
     StartActivity(typeof(MainMenuActivity)); 
    } 
} 
} 

這是ScanLayout.axml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#2579BF" 
android:orientation="vertical"> 
<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:layout_margin="10dp" 
    android:orientation="vertical"> 
    <TextView 
     android:text="Welcome to the Product Scan page, please press the scan button and proceed with scanning the barcode/qrcode." 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/scanPageHelp" /> 
    <Button 
     android:id="@+id/scanCode" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/password" 
     android:layout_marginTop="10dp" 
     android:background="#000000" 
     android:text="PRESS HERE TO SCAN" 
     android:textColor="@android:color/white" /> 
    <Button 
     android:id="@+id/goBackBtn" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/password" 
     android:layout_marginTop="10dp" 
     android:background="#000000" 
     android:text="Go back to the Main Menu" 
     android:textColor="@android:color/white" /> 
</LinearLayout> 

這是xamarin我的第一個Android應用程序。

+0

您是否至少有一條#幫助縮小範圍? – Daniel

+0

它沒有說與行號相關的任何內容。它從字面上給了我那個錯誤信息。 –

回答

0

如果你只是從頭開始連接你的「MainPage」將不會在導航上下文中,並會像這樣死去。將您的MainPage放置在導航上下文中。完成Zxing的「簡單」版本 - https://github.com/jhealy/xammutts/tree/master/ZXingPlaySLN/ZXingPlay

public App() 
{ 
    InitializeComponent(); 

    // jhealy: this MUST be a nav page, watch out 
    // MainPage = new ZXingPlay.MainPage(); 
    MainPage = new NavigationPage(new ZXingPlay.MainPage()); 
}