Ich möchte ZXing Intent in Nicht-Aktivität-Klasse starten und behandeln. Aber ich weiß nicht, wie ich das Ergebnis in dieser Klasse erreichen kann.Zxing Intent-Handle in Nicht-Aktivität-Klasse
Dieser Code ist in Xamarin eingegeben, aber es ist nicht wichtig.
ScannerZXing.cs:
Intent intenScanner;
public ScannerZXing()
{
intentScanner = ScanIntent.GetZXingScanIntent();
}
public override void Scan(Activity current)
{
//this.StartActivityForResult(this.intentScanner, 0); // error: Java.Lang.NullPointerExceptionn
//current.StartActivityForResult(this.intentScanner, 0); // OK, but I have to handle result in MainActivity (I don't want it.)
}
protected override void OnActivityResult(int requestCode, [Android.Runtime.GeneratedEnumAttribute()] Android.App.Result resultCode, Android.Content.Intent intent)
{
base.OnActivityResult(requestCode, resultCode, intent);
//....
}
MainClass.cs:
protected override void OnCreate(Bundle bundle)
{
//....
var scanner = new ScannerZXing();
Button btnScan = this.FindViewById<Button>(Resource.Id.btnScan);
btnScan.Click += delegate
{
scanner.Scan(this);
}
//....
}
Wenn ich onActivityResult in MainActivity tun, es funktioniert. Aber ich möchte die Scan-Logik in getrennte Klassen verschieben.
Hallo, danke. Ich weiß über diesen Weg Bescheid, aber ich würde den Vorsatz bevorzugen. – TENK
Ziemlich sicher, dass Sie OnActivityResult benötigen. Selbst das Nugget verwendet wahrscheinlich eine Aktivität, die es nur von Ihrem Code abstrahiert. –