0

我有一个应用程序,它确实......在主课开始时我做了以下事情:

myCommunicator = new Communicator();
    // LOAD DB
    dbAdapter = new ToDoDBAdapter(this);
    dbAdapter.open();
    // CHECK CHANNEL CHANGES
    try {
      dbHandler = dbAdapter.getAllChannelNames();
      startManagingCursor(dbHandler);
      String md5Channels = "";
      while (dbHandler.moveToNext()) 
      {
          String xy = dbHandler.getString(0);
          md5Channels += xy;
      }
      // 2. Make MD5 string
      md5Channels = myCommunicator.md5(md5Channels); 

      // 3. Compare MD5
      ChannelsArray = myCommunicator.getChannels(md5Channels);
      // 4. Update if needed
      if(ChannelsArray.length() > 0)
      {
          dbAdapter.populateDB(ChannelsArray);
      }

      dbHandler = dbAdapter. getAllToDoItemsCursor();

    } 
    catch (JSONException e) {
            Log.d(" - PopulateChannels - ", "Napaka: " + e.toString());
        }

定义了 myCommunicator、dbAdapter、dbHandler、ChannelsArray...

比我有

public Cursor getChannelCursor()
{
    return dbHandler;
}
public ToDoDBAdapter getDBAdapter()
{
    return dbAdapter;
}
public Communicator getCommunicator()
{
    return myCommunicator;
}
public JSONArray getChannelsArray()
{
    return ChannelsArray;
}

这个类有tabhost *将调用它Activity1 ...当我从另一个类调用时*将调用它Activity2 ...(在tapost内部)结果为null ...

因此,当我Activity1.getChannelsArray();从 Activity2 执行(或任何其他功能)时,它始终为空......不知道如何解决它......


您好,抱歉信息不足...

我有主要活动...在开始时调用(Activity1)...我在那里填充数据库(如果有任何更改)并创建数据库光标...此活动包含 TabHost...

最简单的解释方法是编写一些代码:

这是Activity1(主要活动)

package com.Avtivity1;
public class activity1 extends Activity
{

  public void onCreate(Bundle savedInstanceState) { 
  ...
     dbAdapter = new ToDoDBAdapter();
  }
  public ToDoDBAdapter getDBAdapter()
  {
    return dbAdapter;
  }
}

现在还有一个:

package com.Avtivity1;
public class activity1 extends TabActivity implements OnTabChangeListener 
{
  private ToDoDBAdapter dbAdapter;
  @Override
  public void onCreate(Bundle icicle) { 
  ...
     Activity1 Activity1 = new Activity1();
     Activity1.getDBAdapter();
  }
  public ToDoDBAdapter getDBAdapter()
  {
    return dbAdapter;
  }
}

而这部分Activity1.getDBAdapter();总是返回 null ...

4

1 回答 1

1

通常,不要Activity将需要在应用程序的其他部分使用的数据持久化。不能依赖 Activity 的生命周期,因为系统可能会根据内存不足等需求回收其资源。

相反,将您的值存储在单例非活动类中。

于 2011-04-12T13:06:02.990 回答