Search code examples
javaandroidsqliteopenhelper

How we can pass data?


How we can pass data of a methods MainAntivity to another class type SQLiteOpenHelper. For example we have :(MainActivity.java)

public class MainActivity extends ActionBarActivity {
public static String PACKAGE_NAME;
public String xxx(){
    PACKAGE_NAME = getApplicationContext().getPackageName();
    return PACKAGE_NAME;
    }
}

And another class is :(DB.java)

public class DB extends SQLiteOpenHelper{
  MainActivity cc = new MainActivity();
  Log.d("test",(String) cc.xxx());
}

But above code not work.


Solution

  • You shouldn't instantiate activity classes this way. Use a separate class instead, where you can define methods which you'd like to use somewhere else. In your case, receiving package name, I'd do something like this

    public class PackageNameHelper
    {
        private Context mContext;
    
        public PackageNameHelper(Context context)
        {
            mContext = context;
        }
    
        public String GetPackageName(){
            return mContext.getPackageName();
        }
    
    }
    

    Then in your activity / SQLite helper you'd do:

    PackageNameHelper helper = new PackageNameHelper(getApplicationContext());
    String packageName = helper.getPackageName()
    

    Or you can make the helper class static, that way Context must be passed directly int the getPackageName() method, like

    public class PackageNameHelper
    {
    
        public static String GetPackageName(Context context){
            return context.getPackageName();
        }
    
    }
    

    and use it like

    //Where context is an instance of a context
    String packageName = PackageNameHelper.getPackageName(context);