当在onClick上调用新intent时,SQLite行条目为null

时间:2013-11-21 20:49:15

标签: android sqlite android-activity null onclick

我无法弄清楚这里有什么问题。我的代码可以正常输入数据。

 mNextButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            if (mPager.getCurrentItem() == mCurrentPageSequence.size()) {

                Bundle t = mWizardModel.findByKey("Surf:Post Title").getData();
                if ( t != null )
                {
                    t = mWizardModel.findByKey("Snow:Post Title").getData();
                }
                if ( t != null )
                {
                    t = mWizardModel.findByKey("Skate:Post Title").getData();
                }
                String title = t.getString(Page.SIMPLE_DATA_KEY);


                Bundle p = mWizardModel.findByKey("Surf:Price").getData();
                if ( p != null )
                {
                    p = mWizardModel.findByKey("Snow:Price").getData();
                }
                if ( p != null )
                {
                    p = mWizardModel.findByKey("Skate:Price").getData();
                }
                String price = p.getString(Page.SIMPLE_DATA_KEY);

                String maincat = mWizardModel.findByKey("Main Category").getData().getString(Page.SIMPLE_DATA_KEY);

                myDb.insertRow(title, price, maincat);

        } else {
                if (mEditingAfterReview) {
                    mPager.setCurrentItem(mPagerAdapter.getCount() - 1);
                } else {
                    mPager.setCurrentItem(mPager.getCurrentItem() + 1);
                }
            }

        }});

但是当它看起来像是因为我需要在下一个活动中添加一些照片时它会因价格和标题而变为空白...

 mNextButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            if (mPager.getCurrentItem() == mCurrentPageSequence.size()) {

                Bundle t = mWizardModel.findByKey("Surf:Post Title").getData();
                if ( t != null )
                {
                    t = mWizardModel.findByKey("Snow:Post Title").getData();
                }
                if ( t != null )
                {
                    t = mWizardModel.findByKey("Skate:Post Title").getData();
                }
                String title = t.getString(Page.SIMPLE_DATA_KEY);


                Bundle p = mWizardModel.findByKey("Surf:Price").getData();
                if ( p != null )
                {
                    p = mWizardModel.findByKey("Snow:Price").getData();
                }
                if ( p != null )
                {
                    p = mWizardModel.findByKey("Skate:Price").getData();
                }
                String price = p.getString(Page.SIMPLE_DATA_KEY);

                String maincat = mWizardModel.findByKey("Main Category").getData().getString(Page.SIMPLE_DATA_KEY);


                myDb.insertRow(title, price, maincat);


                Intent I = new Intent(PostActivity.this, PostPhotosActivity.class);
                PostActivity.this.startActivity(I);

        } else {
                if (mEditingAfterReview) {
                    mPager.setCurrentItem(mPagerAdapter.getCount() - 1);
                } else {
                    mPager.setCurrentItem(mPager.getCurrentItem() + 1);
                }
            }

        }});

以下是我收到的错误消息......

11-21 20:42:55.361: E/SQLiteDatabase(31734): Error inserting title=null maincategory=Surf price=null
11-21 20:42:55.361: E/SQLiteDatabase(31734): android.database.sqlite.SQLiteConstraintException: mainTable.title may not be NULL (code 19)
11-21 20:42:55.361: E/SQLiteDatabase(31734):    at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
11-21 20:42:55.361: E/SQLiteDatabase(31734):    at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:775)
11-21 20:42:55.361: E/SQLiteDatabase(31734):    at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
11-21 20:42:55.361: E/SQLiteDatabase(31734):    at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
11-21 20:42:55.361: E/SQLiteDatabase(31734):    at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469)
11-21 20:42:55.361: E/SQLiteDatabase(31734):    at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
11-21 20:42:55.361: E/SQLiteDatabase(31734):    at trade.ly.tradely.DBAdapter.insertRow(DBAdapter.java:111)
11-21 20:42:55.361: E/SQLiteDatabase(31734):    at trade.ly.tradely.PostActivity$3.onClick(PostActivity.java:130)
11-21 20:42:55.361: E/SQLiteDatabase(31734):    at android.view.View.performClick(View.java:4204)
11-21 20:42:55.361: E/SQLiteDatabase(31734):    at android.view.View$PerformClick.run(View.java:17355)
11-21 20:42:55.361: E/SQLiteDatabase(31734):    at android.os.Handler.handleCallback(Handler.java:725)
11-21 20:42:55.361: E/SQLiteDatabase(31734):    at android.os.Handler.dispatchMessage(Handler.java:92)
11-21 20:42:55.361: E/SQLiteDatabase(31734):    at android.os.Looper.loop(Looper.java:137)
11-21 20:42:55.361: E/SQLiteDatabase(31734):    at android.app.ActivityThread.main(ActivityThread.java:5041)
11-21 20:42:55.361: E/SQLiteDatabase(31734):    at java.lang.reflect.Method.invokeNative(Native Method)
11-21 20:42:55.361: E/SQLiteDatabase(31734):    at java.lang.reflect.Method.invoke(Method.java:511)
11-21 20:42:55.361: E/SQLiteDatabase(31734):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
11-21 20:42:55.361: E/SQLiteDatabase(31734):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11-21 20:42:55.361: E/SQLiteDatabase(31734):    at dalvik.system.NativeStart.main(Native Method)

注意:活动确实在错误之后开始。

0 个答案:

没有答案