java - 如果变量没有数据尝试另一个?

标签 java android sqlite variables if-statement

我正在尝试在 android 中的向导结束时创建一个数据库供给器。

将会有多种不同类型的标题,但现在我只能调用一种,因为我会得到一个空指针异常。

String title = mWizardModel.findByKey("Surf:Post Title").getData().getString(Page.SIMPLE_DATA_KEY);

我需要做的是:

String title = mWizardModel.findByKey("Surf:Post Title" if no data try = "Snow:Post Title" = if no data try "Skate:Post Title").getData().getString(Page.SIMPLE_DATA_KEY);

但是我不确定如何真正实现这个工作,我尝试了很多不同的 if null 语句,但它们似乎都不能满足我的需要,因为我的数据库行是这样创建的。

 String title = mWizardModel.findByKey("Surf:Post Title").getData().getString(Page.SIMPLE_DATA_KEY);
                String maincat = mWizardModel.findByKey("Main Category").getData().getString(Page.SIMPLE_DATA_KEY);
                String price = mWizardModel.findByKey("Surf:Price").getData().getString(Page.SIMPLE_DATA_KEY);


                myDb.insertRow(title, price, maincat);

这是 onClick 中的完整代码

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

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

                String title = mWizardModel.findByKey("Surf:Post Title").getData().getString(Page.SIMPLE_DATA_KEY);
                String maincat = mWizardModel.findByKey("Main Category").getData().getString(Page.SIMPLE_DATA_KEY);
                String price = mWizardModel.findByKey("Surf:Price").getData().getString(Page.SIMPLE_DATA_KEY);


                myDb.insertRow(title, price, maincat);

                DialogFragment dg = new DialogFragment() {
                    @Override
                    public Dialog onCreateDialog(Bundle savedInstanceState) {
                        return new AlertDialog.Builder(getActivity())
                                .setMessage(R.string.submit_confirm_message)
                                .setPositiveButton(R.string.submit_confirm_button, null)
                                .setNegativeButton(android.R.string.cancel, null)
                                .create();
                    }

                };
                dg.show(getSupportFragmentManager(), "place_order_dialog");
            } 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 )
                { 

//只返回这个Key! (“Skate:帖子标题”)没有其他人。

                    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);

                DialogFragment dg = new DialogFragment() {
                    @Override
                    public Dialog onCreateDialog(Bundle savedInstanceState) {
                        return new AlertDialog.Builder(getActivity())
                                .setMessage(R.string.submit_confirm_message)
                                .setPositiveButton(R.string.submit_confirm_button, null)
                                .setNegativeButton(android.R.string.cancel, null)
                                .create();
                    }

                };
                dg.show(getSupportFragmentManager(), "place_order_dialog");
            } else {
                if (mEditingAfterReview) {
                    mPager.setCurrentItem(mPagerAdapter.getCount() - 1);
                } else {
                    mPager.setCurrentItem(mPager.getCurrentItem() + 1);
                }
            }

        }
    });

最佳答案

如果将其分成单独的行,会更容易(并且可能有效):

/* not sure what the type is, so let's go with Data... */
Data d = mWizardModel.findByKey("Surf:Post Title").getData();
if ( d == null )
{
    d = mWizardModel.findByKey("Surf:Post Title").getData();
}
if ( d == null )
{
   //...
}
String title = d.getString(Page.SIMPLE_DATA_KEY);

关于java - 如果变量没有数据尝试另一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20110316/

相关文章:

ios - 无法使用以下代码更新记录

java - 无法从 Assets 文件夹中填充的 sqlite 数据库获取数据

Java Fx 文件位置异常

java - 在 Spark Streaming Java 中提取嵌套 JSON 值

android - 同一个 RadioGroup 中的 RadioButtons,但可以选择两个按钮

Android 自定义键盘从 Activity 更改

java - JUnit - assertFalse 不排除 == 运算符?

java - java - 如何检查按下的键是否是Java KeyListener中的箭头键?

java - 在服务中实现 onActivityResult()

java.lang.StackOverflowError 错误