1

我需要在 50 个 DataPack.class 实例中填充数据,假设在 A 类中,但我需要在某些 B 类中读出该数据。DataPack 类看起来像这样:

public class DataPack {
    int fNumber;
    int dateTime;
    int Year, fMonth, fDay;
    int fTimeHours, fTimeMin, fTimeSec;
    int fSize;
    char[] name = new char[18];
    char[] surname = new char[18];
}

在 AI 类中会创建 DataPack[] mDataPack = new DataPack[50]; 然后在每个数组成员中填充数据。但是为了在 B 类中读取,这个数据数组需要是全局的。这有可能以这种方式解决吗?还是存在更好的解决方案?

感谢帮助!

4

3 回答 3

5

创建一个ClassicSingleton.java像下面这样的类,并在任何类中使用任何函数或数据成员。

如何制作单例类?

public class ClassicSingleton {

   private static ClassicSingleton instance = null;
   public ArrayList<String> name = new ArrayList<String>(); // Member

   protected ClassicSingleton() {
      // Exists only to defeat instantiation.
   }
   public static ClassicSingleton getInstance() {
      if(instance == null) {
         instance = new ClassicSingleton();
      }
      return instance;
   }
   public String getName()
   {
   String myName="Chintan Khetiya";
   return myName;
   }

   public ArrayList<String> getNameformarray() {
     name.add("Android");
     name.add("IPhone");
     name.add("Windows");
     return name;

    }

}

如何使用 Singleton 类的函数和成员?

ClassicSingleton CS= new ClassicSingleton();
CS.getInstance();
String myName=CS.getname(); // Output will be >> Chintan Khetiya
String like=CS.getNameformarray().get(1); // Output will be >> Android

同样的方式,您可以通过对象的静态引用公开使用数据成员。

这是最好的使用方式。

于 2013-05-27T06:29:59.343 回答
0

Android 有一个特殊的类,称为 Application 类。如果您在那里声明任何变量,则可以通过您的应用程序访问它。它就像一个全球单身人士。

  public class DataPack {
  int fNumber;
  int dateTime;
  int Year, fMonth, fDay;
  int fTimeHours, fTimeMin, fTimeSec;
  int fSize;
  char[] name = new char[18];
  char[] surname = new char[18];
  }
  public class A extends Application 
  {     
   DataPack[] mDataPack = new DataPack[50];
  } 

现在去 manifest 并进行以下更改:

   <application android:icon="@drawable/icon" android:label="@string/app_name"
android:name="com.yourAppName.DataPack">

然后你可以去任何活动并使用这个全局单例,比如:

  DataPack pack = (DataPack)getApplication();
  //get the array using <pack.mDataPack> in a loop.

使用单例的优点: *即使屏幕方向发生变化,应用程序状态也保持不变。

于 2013-05-27T06:19:07.803 回答
0

试试这个解决方案

  • 做一个BaseActivity扩展Activity
  • 将您的其他活动扩展到BaseActivity
  • 在中创建DataPack数组实例BaseActivity
  • 保存 DataPack 详细信息时,将其保存为BaseActivity.
于 2013-05-27T06:09:45.903 回答