我们如何将methods
MainAntivity
的数据传递给另一个class
类型SQLiteOpenHelper
。
例如,我们有:(MainActivity.java
)
public class MainActivity extends ActionBarActivity {
public static String PACKAGE_NAME;
public String xxx(){
PACKAGE_NAME = getApplicationContext().getPackageName();
return PACKAGE_NAME;
}
}
另一个课程是:(DB.java
)
public class DB extends SQLiteOpenHelper{
MainActivity cc = new MainActivity();
Log.d("test",(String) cc.xxx());
}
但是上面的代码不起作用。
答案 0 :(得分:1)
您不应该以这种方式实例化活动类。改为使用单独的类,您可以在其中定义您想要在其他地方使用的方法。在您的情况下,收到包裹名称,我会做这样的事情
public class PackageNameHelper
{
private Context mContext;
public PackageNameHelper(Context context)
{
mContext = context;
}
public String GetPackageName(){
return mContext.getPackageName();
}
}
然后在你的activity / SQLite助手中你会做:
PackageNameHelper helper = new PackageNameHelper(getApplicationContext());
String packageName = helper.getPackageName()
或者你可以让helper类保持静态,那样Context必须直接在getPackageName()方法中传递,比如
public class PackageNameHelper
{
public static String GetPackageName(Context context){
return context.getPackageName();
}
}
并像
一样使用它//Where context is an instance of a context
String packageName = PackageNameHelper.getPackageName(context);
答案 1 :(得分:1)
你不应该实例化你的活动。在我看来,一个好的方法是为你的DB
类定义一个构造函数,它将一个参数作为这个应用程序的上下文。您可以将其保存在成员变量中,并在需要时使用它。
public class DB extends SQLiteOpenHelper {
Context mContext;
/* Constructor */
public DB(Context context) {
mContext = context;
}
}
如果您需要在DB
类代码中打包名称,可以使用mContext.getPackageName()
来检索包名称。