为什么我不能使ArrayList静态?

时间:2014-06-09 22:43:07

标签: android android-intent arraylist static

我有以下代码。

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);

任何帮助将不胜感激,如果你可以添加将修复它的代码将是伟大的。谢谢,

3 个答案:

答案 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以获取有关静态方法如何工作的更多信息。