Другой способ сделать это, который может быть проще, - создать класс Application для вашего приложения.Это гарантированно будет создано только один раз и существует в течение всего времени жизни вашего приложения.Помимо всего прочего, он может обеспечить возможность «концентратора данных» для вашего приложения, чтобы различные действия могли легко обмениваться данными.Таким образом, для вашего курсора вы просто использовали бы переменную-член класса Application следующим образом (предупреждение, я скопировал этот код из своего приложения и отредактировал его здесь, так что никакой гарантии компиляции. Просто что-то, чтобы показать идею.):
package com.jcascio.k03;
import android.app.Application;
import android.database.Cursor;
// use your application's name instead of "K03Application"
public class K03Application extends Application {
public final String TAG = "K03";
Cursor sharedCursor; // this cursor can be shared between different Activities
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onTerminate() {
super.onTerminate();
}
public Cursor getSharedCursor()
{
return this.sharedCursor;
}
public void setSharedCursor(Cursor c)
{
this.sharedCursor = c;
}
}
Объект приложения может быть выбран из любого действия, используя
this.getApplication()
// You cast it to your Application sub-class and call the Cursor accessor function
Cursor c = ((K03Application)this.getApplication()).getSharedCursor();
Итак, ваше первое действие получит некоторую липучку из базы данных, которая возвращается ему в виде курсора.Это действие вызовет setSharedCursor в приложении.Затем он запускает второе действие, которое вызывает getSharedCursor в своей функции onCreate (или любой другой функции в этом отношении) для извлечения курсора.