AKT*_*ios 0 sqlite android android-context
我试图从非活动类加载SQLite数据库
我需要DBHelperAdapter类的上下文并使用ApplicationContextProvider如下所述的类.(我没有将这个添加到清单中,因为一些教程建议但是因为我不确定如何.)
CNYearsAdapter myCNYearsAdapter = new CNYearsAdapter( ApplicationContextProvider.getContext());
Run Code Online (Sandbox Code Playgroud)
应用环境提供者:
package com.example.kuachart;
import android.app.Application;
import android.content.Context;
public class ApplicationContextProvider extends Application {
/**
* Keeps a reference of the application context
*/
private static Context sContext;
@Override
public void onCreate() {
super.onCreate();
sContext = getApplicationContext();
}
/**
* Returns the application context
*
* @return application context
*/
public static Context getContext() {
return sContext;
}
}
Run Code Online (Sandbox Code Playgroud)
目前,实例化上面的行myCNYearsAdapter崩溃了程序,因此我不确定Application上下文提供程序是否正常工作.是否有另一种方法可以将上下文传递给此非活动类?
你也必须将它添加到清单,否则ApplicationContextProvider将不能被实例化,onCreate()将永远不会被调用,sContent将保持null.
在清单的application标签中,执行以下操作:
<application
android:name="your.package.name.ApplicationContextProvider"
...
Run Code Online (Sandbox Code Playgroud)
有没有另一种方法来将上下文传递给这个非活动类?
好吧,您总是可以将Context从Activity传递给非活动类.
public class NonActivity {
private Context mContext;
public NonActivity(Context context){
mContext = context;
}
public void someMethod(){
CNYearsAdapter myCNYearsAdapter = new CNYearsAdapter(mContext);
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
在活动内:
NonActivity na = new NonActivity(this);
na.someMethod();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5612 次 |
| 最近记录: |