我们如何传递数据?

时间:2014-06-19 12:31:53

标签: java android sqliteopenhelper

我们如何将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());
}

但是上面的代码不起作用。

2 个答案:

答案 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()来检索包名称。