私はsmthを行うアプリケーションを持っています...メインクラスの開始時に次のことを行います:
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 です ...
したがって、Activity1.getChannelsArray();
Activity2 から (または他の関数を) 実行すると、常に 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を返します...