使用Xamarin(Visual Studio)时,ZXing条形码扫描器出现NullReferenceException错误

6

我正在尝试在使用Visual Studio构建的Andriod应用程序上实现ZXing条形码扫描器。当我尝试点击按钮进行扫描时,我遇到了以下错误:

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上开发的第一个安卓应用。


你至少有行号可以帮助缩小范围吗? - Daniel
它没有提到任何与行号有关的信息。它只是直接给了我那个错误消息。 - Abinodh Thomas
2个回答

15

在MainActivity.cs中的Android项目,在OnCreate中:

ZXing.Mobile.MobileBarcodeScanner.Initialize(Application);


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接