Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正在尝试获取一个现有的数据库,Room Android_Android_Database_Android Room_Android Assets - Fatal编程技术网

正在尝试获取一个现有的数据库,Room Android

正在尝试获取一个现有的数据库,Room Android,android,database,android-room,android-assets,Android,Database,Android Room,Android Assets,下午好。我在应用程序中创建一个现有数据库。我想在房间里向她讲话,但我得到一个错误IllegalArgumentException:无法为数据库提供空上下文。。 我的代码如下所示: @Database(entities = {Series.class}, version = 1, exportSchema = false) public abstract class AppDatabase extends RoomDatabase { private static AppD

下午好。我在应用程序中创建一个现有数据库。我想在房间里向她讲话,但我得到一个错误
IllegalArgumentException:无法为数据库提供空上下文。
。 我的代码如下所示:

    @Database(entities = {Series.class}, version = 1, exportSchema = false)
    public abstract class AppDatabase extends RoomDatabase {
    private static AppDatabase INSTANCE;
    private static final String DB_NAME = "base.db";

    public abstract CymbalDao cymbalDao();

    public static AppDatabase getDatabase(final Context context) {
        if (INSTANCE == null) {
            synchronized (AppDatabase.class) {
                if (INSTANCE == null) {
                    INSTANCE = Room.databaseBuilder(context,
                            AppDatabase.class, DB_NAME)
                            .allowMainThreadQueries()
                            .build();
                }
            }
        }
        return INSTANCE;
    }

}
数据库位置:

..\src\main\assets\base.db
我想知道我做错了什么,也许会听到一些提示,谢谢

由片段调用:

public class CymbalsFragment extends Fragment {

    List<CymbalSeries> cymbalSeries = new ArrayList<>();
    CymbalsAdapter cymbalsAdapter;

    final AppDatabase db = AppDatabase.getDatabase(getContext());
    final CymbalDao cymbalDao = db.cymbalDao();
公共类CymbalsFragment扩展片段{
List cymbalSeries=newarraylist();
CymbalsAdapter-CymbalsAdapter;
final AppDatabase db=AppDatabase.getDatabase(getContext());
final-CymbalDao-CymbalDao=db.CymbalDao();
日志:

08-15 15:46:23.247 31769-31769/ru.alexsuvorov.paistewiki W/System.err: 
java.lang.IllegalArgumentException: Cannot provide null context for the 
database.
08-15 15:46:23.248 31769-31769/ru.alexsuvorov.paistewiki W/System.err:     at     android.arch.persistence.room.RoomDatabase$Builder.build(RoomDatabase.java:600)
    at ru.alexsuvorov.paistewiki.db.AppDatabase.getDatabase(AppDatabase.java:25)
    at ru.alexsuvorov.paistewiki.fragments.CymbalsFragment.<init>(CymbalsFragment.java:29)
    at java.lang.Class.newInstance(Native Method)
    at ru.alexsuvorov.paistewiki.StartDrawer.onNavigationItemSelected(StartDrawer.java:70)
    at android.support.design.widget.NavigationView$1.onMenuItemSelected(NavigationView.java:154)
    at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:822)
    at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:171)
    at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:973)
    at 
 android.support.design.internal.NavigationMenuPresenter$1.onClick(NavigationMenuPresenter.java:342)
08-15 15:46:23.247 31769-31769/ru.alexsuvorov.paisturviki W/System.err:
java.lang.IllegalArgumentException:无法为
数据库
08-15 15:46:23.248 31769-31769/ru.alexsuvorov.paistweiki W/System.err:at-android.arch.persistence.room.RoomDatabase$Builder.build(RoomDatabase.java:600)
位于ru.alexsuvorov.paisturviki.db.AppDatabase.getDatabase(AppDatabase.java:25)
在ru.alexsuvorov.paisturviki.fragments.CymbalsFragment.(CymbalsFragment.java:29)
位于java.lang.Class.newInstance(本机方法)
在ru.alexsuvorov.paisturviki.StartDrawer.onNavigationItemSelected(StartDrawer.java:70)
位于android.support.design.widget.NavigationView$1.onMenuItemSelected(NavigationView.java:154)
在android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected上(MenuBuilder.java:822)
在android.support.v7.view.menu.menuitemmpl.invoke(menuitemmpl.java:171)中
位于android.support.v7.view.menu.MenuBuilder.performitemation(MenuBuilder.java:973)
在
android.support.design.internal.NavigationMenuPresenter$1.onClick(NavigationMenuPresenter.java:342)
此行正在重新调整上下文null。上下文尚未附加到片段。如果在片段的构造函数中调用getContext(),则可能会发生这种情况。在onCreateView或onViewCreated()中调用getContext()

示例代码

 @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment

            Context context = getContext();
            final AppDatabase db = AppDatabase.getDatabase(context);
            return inflater.inflate(R.layout.fragment_profile, container, false);
        }

这是一项活动,你能发布更多的代码吗?@kdblue我正在编辑问题是的,工作得很好!你能告诉我如何使用现有数据库吗?我做得正确吗?
 @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment

            Context context = getContext();
            final AppDatabase db = AppDatabase.getDatabase(context);
            return inflater.inflate(R.layout.fragment_profile, container, false);
        }