Ich versuche, auf globale Aktivitätsvariablen (die ich nicht als statisch machen kann) von einem BroadcastReceiver zuzugreifen. Dafür habe ich eine Instanz der Aktivität auf diese Weise erstellen:Abrufen von System.InvalidCastException in C#
class wifiReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
MainActivity activity = (MainActivity)context.ApplicationContext;
...
aber ich bekomme System.InvalidCastException: Die angegebene Umwandlung ist ungültig. in der Instanzerstellungszeile. Was mache ich falsch?
EDIT: Einige Code meiner Tätigkeit
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();
}
...
}
und umfangreicheren Code aus 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();
}
Warum möchten Sie Context in 'MainActivity' umwandeln? –
'ApplicationContext' ist kein' Activity' 'Context', und es ist insbesondere nicht' MainActivity'. Du kannst nicht tun, was du versuchst zu tun. –
Erhalten Sie Fehler für diese Zeile? - 'MainActivity activity = (MainActivity) context.ApplicationContext; ' –