[英]Call a method of an Activity from a class
我有一个名为BarcodeScanActivity
Activity,它具有方法OnScanDataPass
。 我想从非Activity类(Normal Calss)访问此方法。
public class BarcodeScanActivity : Activity, EMDKManager.IEMDKListener
{
static IScanDataPass _scanDataPass;
public void OnScanDataPass(IScanDataPass scanDataPass)
{
_scanDataPass = scanDataPass;
}
}
下面是我的课
public class ScanCode_Android : IScanCode, IScanDataPass
{
static Context context = Application.Context;
private Intent intent = new Intent(context,typeof(BarcodeScanActivity));
private BarcodeScanActivity scan = new BarcodeScanActivity();
public ScanCode_Android()
{
context.StartActivity(intent);
scan.OnScanDataPass(this);
}
}
上面的代码片段显示了我尝试的方法。 如何在普通班级的活动中调用方法? 如何使用Intent做到这一点?
您无法手动实例化活动,活动实例将由系统实例化,并且其过程很复杂。
您可以将Activity的实例传递给Normal Class来实现您的目标:
public class ScanCode_Android : IScanCode, IScanDataPass
{
BarcodeScanActivity mContext ;
public ScanCode_Android(BarcodeScanActivity context)
{
this.mContext=context;
Intent intent = new Intent(context,typeof(BarcodeScanActivity));
context.StartActivity(intent);
context.OnScanDataPass(this);
}
}
如何使用Intent做到这一点?
您需要使用上下文来处理它。 像StartActivity,StartService ...一样 。
如何在普通班级的活动中调用方法?
像上面的代码一样,将Activity传递给Normal类。
您可以创建一个像素活动,以免看到该活动。
OnePiexlActivity
:
[Activity(Label = "OnePiexlActivity",Theme = "@style/OnePixelActivity")]
public class OnePiexlActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Window.SetGravity(GravityFlags.Left | GravityFlags.Top);
WindowManagerLayoutParams layoutParams= Window.Attributes;
layoutParams.X = 0;
layoutParams.Y = 0;
layoutParams.Height = 1;
layoutParams.Width = 1;
Window.Attributes=layoutParams;
Android.Util.Log.Error("lv","111111111111");
}
}
style
:
<style name="OnePixelActivity" parent="android:Theme.Holo.Light.NoActionBar">
<item name="android:windowIsTranslucent">true</item>
</style>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.