私はBroadcastReceiverからグローバルなアクティビティ変数(静的にすることはできません)にアクセスしようとしています。そのために、私は活動のインスタンスこうして作成:CでSystem.InvalidCastExceptionを取得する
class wifiReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
MainActivity activity = (MainActivity)context.ApplicationContext;
...
をしかし、私はSystem.InvalidCastExceptionの取得:指定されたキャストは有効ではありません。インスタンス作成行で何が間違っているのですか?
EDIT:私の活動のいくつかのコード
public class MainActivity : Activity
{
private WifiManager _manager;
private List<string> _wifiSignals;
private wifiReceiver _wifiReceiver;
private TextView _Text;
protected override void OnCreate(Bundle bundle)
{
...
_wifiReceiver = new wifiReceiver();
_manager = (WifiManager)GetSystemService(Context.WifiService);
_wifiSignals = new List<string>();
if (_manager.IsWifiEnabled)
{
_manager.StartScan();
}
...
}
そしてより広範なBroadcastReceiverからコード:
public override void OnReceive(Context context, Intent intent)
{
MainActivity activity = (MainActivity)context.ApplicationContext;
activity._wifiSignals.Clear();
activity._wifiSignals.Add("Lista de wifi:\n");
IList<ScanResult> wifiScanList = activity._manager.ScanResults;
foreach (ScanResult wifiNetwork in wifiScanList)
{
activity._wifiSignals.Add(wifiNetwork.Ssid + ": " + wifiNetwork.Level);
}
//activity.presentation(activity._wifiSignals, activity);
activity._manager.StartScan();
}
なぜコンテキストを 'MainActivity'にキャストしたいのですか? –
'ApplicationContext'は' Activity'' Contextではなく、 'MainActivity'ではありません。あなたはあなたがしようとしていることをすることはできません。 –
この行にエラーが発生していますか? - 'MainActivityアクティビティ=(MainActivity)context.ApplicationContext; ' –