将光标传递给活动?
答
我个人不知道任何简单的方法来做到这一点。只需在目标活动中再次进行查询可能会更容易。
答
你应该编写自己的Cursor来实现Parcelable接口。在这种情况下,您可以将光标放在parcel上并通过putExtra()将其发送到另一个Activity。在目标活动中,你可以爆炸(实际上只需通过处理程序找到它)通过Parcel方法之一(与Binder相关)进行光标游标。
答
另一种可能更简单的方法是为您的应用程序创建一个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。然后它会启动第二个Activity,它会在其onCreate函数(或任何其他函数)中调用getSharedCursor来检索游标。
我最终这样做。如果能够通过光标,会更漂亮。 – dfetter88 2010-10-18 02:27:13
@ dfetter88 +1我同意... – Mirko 2012-10-22 08:28:55