Android:无法从静态上下文引用非静态方法

时间:2013-06-17 23:01:55

标签: java android

我已经在互联网上搜索了这个错误的答案:

无法从静态上下文引用非静态方法'getStringExtra(java.lang.String)'

我没有找到任何东西,所以我来到这里。这是我用来添加信息的代码:

Intent OpenList = new Intent(this, ListRandom.class);
OpenList.putExtra("ListItem1",List.get(1));
OpenList.putExtra("ListItem2", List.get(2));
OpenList.putExtra("ListItem3", List.get(3));
OpenList.putExtra("ListItem4",List.get(4));
OpenList.putExtra("ListItem5", List.get(5));

这里有额外的,我收到错误:

    Intent OpenList = getIntent();
    ListItem1 = Intent.getStringExtra("ListItem1");
    ListItem2 = Intent.getStringExtra("ListItem2");
    ListItem3 = Intent.getStringExtra("ListItem3");
    ListItem4 = Intent.getStringExtra("ListItem4");
    ListItem5 = Intent.getStringExtra("ListItem5");

任何帮助都会受到赞赏,因为我正在成长为程序员!

2 个答案:

答案 0 :(得分:5)

更改

 Intent OpenList = getIntent();
ListItem1 = Intent.getStringExtra("ListItem1");
ListItem2 = Intent.getStringExtra("ListItem2");
ListItem3 = Intent.getStringExtra("ListItem3");
ListItem4 = Intent.getStringExtra("ListItem4");
ListItem5 = Intent.getStringExtra("ListItem5");

 Intent OpenList = getIntent();
ListItem1 = OpenList.getStringExtra("ListItem1");
ListItem2 = OpenList.getStringExtra("ListItem2");
ListItem3 = OpenList.getStringExtra("ListItem3");
ListItem4 = OpenList.getStringExtra("ListItem4");
ListItem5 = OpenList.getStringExtra("ListItem5");

使用您在此处创建的Intent对象

Intent OpenList = getIntent();

与任何其他课程一样,使用Intent.getStringExtra("words");static方式调用它,如果您查看Intent Docs getStringExtra(String name),则不是static方法,以便在Intent Intent OpenLIst = getIntent();

的情况下创建实例

此外,为了坚持使用Java编程标准,您应该为变量名使用大小写,因此OpenList将是openListListItem1将是listItem1。这对于编译显然不是必需的,但尝试坚持标准是个好主意

答案 1 :(得分:0)

当你写:

    ListItem1 = Intent.getStringExtra("ListItem1");

您在某个类(即getStringExtra(String name))上使用了一种方法(即Intent),这是static方法。

相反,您应该在对象(即OpenList)上使用方法来进行非静态方法。

因此,您的代码应更改为:

    ListItem1 = OpenList.getStringExtra("ListItem1");

并应用于ListItem2,ListItem3等。

OpenList