0
アクティビティクラス以外でZXingインテントを開始して処理したいとします。しかし、私はこのクラスの結果をキャッチする方法を知らない。非アクティビティクラスのハンドルを作成する
このコードは、Xamarinに入力されたが、それは重要ではありません。
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);
}
//....
}
私はMainActivityでOnActivityResultをすれば、それは動作します。しかし、私はスキャンロジックを分離クラスに移したいと思っています。
こんにちは、ありがとう。私はこの方法について知っていますが、私はインテントアプローチを好むでしょう。 – TENK
あなたはOnActivityResultが必要ですか?ナゲットでさえ、おそらくあなたのコードから抽象的なアクティビティを使用するでしょう。 –