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