我有一个应用程序,它可以实现......在主要课程开始时我会做以下事情:
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 ...(在tabost内)结果为null ...
所以,当我从Activity2执行Activity1.getChannelsArray();
(或任何其他功能)时,它始终为null ...不知道如何解决它......
嗨,抱歉缺少信息......
我有一个主要活动...在开始时调用(Activity1)...我在那里填充DB(如果有任何更改)并创建DB Cursor ...此活动持有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 ...
答案 0 :(得分:1)
通常,不要将数据保留在需要在应用程序的其他部分中使用的Activity
中。不能依赖活动的生命周期,因为系统可能会根据内存不足等需求回收资源。
相反,请将您的值存储在单个非Activity类中。