【问题标题】:Android create static ArrayListAndroid 创建静态 ArrayList
【发布时间】:2014-01-03 23:47:33
【问题描述】:

我试图从我的 android 应用程序中的 arrayList 中删除值,但它们不断重新出现。

我的 arrayList 在一个单独的类中, 在我的主要活动中,我创建了该类的一个实例并从数组中删除了一个值。 我退出 Main Activity 并返回值重新出现。

我的问题是我怎样才能获得数组类的某种静态实例???

 //ArrayClass
 public class ArrayClass {

 public final static ArrayList<String> words = new ArrayList<String>();

 public ArrayClass() {
    words.add("WORD");
    words.add("WORD");
    words.add("WORD");
 }

 //Main Class
 ArrayClass wordc = new ArrayClass();

 @Override
 protected void onCreate(Bundle savedInstanceState) {   
      wordc.removeWord(0);
 }

【问题讨论】:

    标签: android arraylist static


    【解决方案1】:

    Orest 是正确的,您确实想要一个单例模式,但请记住,当您访问类的方法时,您总是需要使用 getInstance() 方法。

    例如类中的方法:

    public String getWord(index i) {
         .......
    }
    

    应该如下静态调用

    ArrayClass.getInstance().getWord(i);
    

    不是这样的

    wordc.getWord(i);
    

    这保证只有一个实例(因此是单例)

    【讨论】:

    • 谢谢迈克...我试试看:)
    【解决方案2】:

    我可能对您在做什么感到困惑,但要访问 static Array 您不想创建该类的实例。每次执行此操作时,您都在运行构造函数,在示例代码中,每次使用 3 个值填充您的 static Array

    我看不出你想要完成什么,所以也许你可以解释得更好一点,但我猜这真的不是你想要你的构造函数做的事情。我认为您想静态访问Array 本身

     //Main Class
     ArrayClass wordc = new ArrayClass(); 
    
     @Override
     protected void onCreate(Bundle savedInstanceState) {   
          wordc.removeWord(0);  //don't need this
          ArrayClass.words.remove(0);  // would remove the element at index 0
     }
    

    但这仍然不能解决您的问题。您需要在您的ArrayClass 类中添加一个将项目添加到您的Array 的方法。每次创建类的新实例时,在构造函数中执行此操作都会添加这些项。

    如果这不能回答你的问题,那么也许你可以更好地解释你的任务。

    【讨论】:

    • 很抱歉给您带来了困惑。我需要在应用程序的整个生命周期中保持数组的状态,所以当我回到 main 时,数组的实例与我离开时的状态相同......谢谢您的回复!
    • 这应该是公认的答案。所有这些单身答案都很糟糕。这不是 C++ 人,把单例留在他们所属的地方。 +1 以获得最佳响应
    【解决方案3】:

    你试过单例模式吗?您将拥有一个 ArrayClass 的静态引用,并且它的内部状态不会被活动生命周期所违反。

    public class ArrayClass {
         private static ArrayClass instance;
         public static ArrayClass getInstance() {
             if(instance == null) instance = new ArrayClass();
             return instance;
         }
    //...rest goes as is.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多