繁体   English   中英

从类中调用Activity的方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM