簡體   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