非静态字段,方法或属性'Android.Content.Intent.GetStringExtra(string)'需要对象引用

时间:2015-12-08 08:07:59

标签: c# android xamarin

public override void OnCreate()
{
    base.OnCreate();

    //Find our audio and notificaton managers
    audioManager = (AudioManager)GetSystemService(AudioService);
    wifiManager = (WifiManager)GetSystemService(WifiService);

    string text = Intent.GetStringExtra ("MyData") ?? "Data not available";
  

错误CS0120:非静态字段,方法或属性需要对象引用   'Android.Content.Intent.GetStringExtra(string)'(CS0120)

我一直在为代码的最后一行收到此错误。我试图将数据从qr代码传递到下一个活动,就像他们在here

中那样做

我不知道如何解决这个问题,我尝试创建静态,但没有修复它。

3 个答案:

答案 0 :(得分:1)

getStringExtra是一种非静态方法。这意味着您需要一个对象来调用它。对于getStringExtra,您需要一个Intent对象来调用它,而不是类。

那你怎么得到一个意图对象?在活动中,您可以使用getIntent来获取传递给活动的意图。现在你有了这个对象,你可以在返回的对象上调用getStringExtra

var obj = getIntent();
var someString = obj.getStringExtra(someArgs);

您可以将此简化为

var someString = getIntent().getStringExtra(someArgs);

答案 1 :(得分:0)

GetStringExtra用于在两个活动之间传递数据。您只放置了其中一项活动...您是否正确使用此功能?

此处提供更多信息:https://developer.xamarin.com/recipes/android/fundamentals/activity/pass_data_between_activity/

答案 2 :(得分:0)

将数据从Activity1传递到Activity2,如下所示:

Activity1传递数据

Intent intent = new Intent(Activity1.this, Activity2.class);

intent.putExtra("key","value");

startActivity(intent);

Activity2获取数据,在Activity2 onCreate方法中写下以下代码

String data = getIntent().getStringExtra("key");