我有以下代码。
public class Start extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
ArrayList<String> aPlayerList = getIntent().getStringArrayListExtra("playerList");
static ArrayList<Integer> aScores = getIntent().getIntegerArrayListExtra("scores");
...
我在尝试制作ArrayList<Integer> aScores
静态时遇到错误:Non-static method getIntent() cannot be referenced from a static context
,我不知道如何解决此问题。
如果有帮助,这就是意图传递的方式:
Bundle bund = new Bundle();
bund.putStringArrayList("playerList", playerList);
bund.putIntegerArrayList("scores", scores);
Intent intent = new Intent(Players.this, Start.class);
intent.putExtras(bund);
startActivity(intent);
任何帮助将不胜感激,如果你可以添加将修复它的代码将是伟大的。谢谢,
答案 0 :(得分:2)
因为你的语法错了。
你不能在方法static
中创建一个变量,这将是什么用途?静态意味着该字段与类相关,因此您可以在不进行任何引用的情况下访问它(ClassName.staticField
)。
方法中的变量与方法有关,因此您无法在其外部访问它们,因此可以在此处使用静态?
您确定不会对final
感到困惑吗?这是有效的。
要解决您的问题,您只需将static ArrayList<Integer> aScores
作为该类的字段,以便您可以在代码中的任何位置访问它。然后将您的onCreate
方法修改为此
aScores = getIntent().getIntegerArrayListExtra("scores");
所以它会将数组列表保存在aScores
字段中。
答案 1 :(得分:1)
这是因为getIntent()
是非静态方法,不应该引用静态字段。
<强>溶液强>
删除arrayList的静态。
答案 2 :(得分:0)
静态方法只创建一次,因此您无法引用getIntent(),因为Java不知道您引用的方法的哪个实例。
检查here以获取有关静态方法如何工作的更多信息。