首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我不能使用导航抽屉-代码规范在SQLite中插入数据,如果需要,我会提供更多。

我不能使用导航抽屉-代码规范在SQLite中插入数据,如果需要,我会提供更多。
EN

Stack Overflow用户
提问于 2017-01-23 11:09:32
回答 1查看 221关注 0票数 0

请检查这张图片

大家好,

虽然我在Android上工作了4个月,但是我第一次探索导航视图。请看这个问题所提供的图片。实际上,我正在创建一个提醒应用程序。现在,我有三个不同的类别来创建提醒。我添加了一个Listview作为主页,如果我单击第一个Listview项目,它将打开第一个类别(活动)。M活性由3 TabFrament组成。我有TextViews和EditTexts来添加提醒。当我通过单击Listview条目进入时,它可以正常工作。但是,我也想提供一个导航抽屉。因此,我将导航菜单项保留为- Home,Tab Frag1.就像这样。点击它就会打开所需的片段。但是,任何东西都不会保存在数据库和应用程序崩溃中,或者如果我不添加任何数据,它会显示保存并立即开始响。有很多密码。所以,如果你说的话,我会在这里提出这个问题。

现在,我的问题:

  1. 当我使用导航抽屉输入数据(特别是片段)时,为什么我的应用程序会崩溃,而当我使用滑动选项卡或Listview Cick时却不会崩溃呢?
  2. 我是否做错了尝试插入数据使用导航抽屉,因为它是一个UI元素?

任何帮助都将不胜感激。

这是逻辑猫:

代码语言:javascript
复制
Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
    at android.database.AbstractCursor.checkPosition(AbstractCursor.java:460)
    at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
    at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
    at first_app.practice.portfolio.advancedreminder.TabFragment1.populateFields(TabFragment1.java:301)
    at first_app.practice.portfolio.advancedreminder.TabFragment1.onCreateView(TabFragment1.java:148)
    at android.support.v4.app.Fragment.performCreateView(Fragment.java:2184)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1254)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1467)
    at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1681)
    at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:3357)
    at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:120)
    at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:378)
    at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:33)
    at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:766)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:847) 
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:527) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:429) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:380) 
    at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:288) 
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:143) 
    at first_app.practice.portfolio.advancedreminder.PostClickNotificationActivity.onCreate(PostClickNotificationActivity.java:42) 
    at android.app.Activity.performCreate(Activity.java:6877) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3209) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3352) 
    at android.app.ActivityThread.access$1100(ActivityThread.java:223) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1797) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:158) 
    at android.app.ActivityThread.main(ActivityThread.java:7231) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

但是,正如我在图中所描述的,只有在使用导航抽屉打开片段时,才会在swipe选项卡中添加数据时才会发生这种情况。

以下是数据库规范:

代码语言:javascript
复制
  private static final String TABLE_TEST = "TABLE_NAME";
    //Column Name
    public static final String KEY_ID = "id";
    public static final String KEY_N = "name";
    public static final String KEY_B= "b";
    public static final String KEY_L= "l";
    public static final String KEY_M= "m";
    public static final String KEY_MS= "ms";
    public static final String KEY_P= "p";
    public static final String KEY_DATE_TIME = "reminder_date_time";

    public Cursor fetchReminder(long rowId) throws SQLException {

            SQLiteDatabase db = this.getWritableDatabase();

            Cursor mCursor = db.query(TABLE_TEST, new String[]{KEY_ID,
                            KEY_N, KEY_B, KEY_L, KEY_M, KEY_MS, KEY_P, KEY_DATE_TIME}, KEY_ID + "=" + rowId, null,
                    null, null, null, null);

            if (mCursor !=null ) {
                mCursor.moveToFirst();
            }
            return mCursor;
        }

请查收并告诉我。如果你想要更多的代码请告诉我。谢谢您的帮助。我用同样的logcat错误来使用它,但是它并没有帮助我。

EN

回答 1

Stack Overflow用户

发布于 2017-01-26 13:54:08

代码语言:javascript
复制
by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0

检查崩溃日志,它清楚地表明,您的数据库是空白的,里面没有数据。因为,我没有看到insert to data查询,无法对其进行注释,我只能说您试图运行的mCursor查询,当它为null且没有行时,尝试从表中获取数据。请检查您为将数据插入表而编写的查询是否正确执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41804939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档