如何显示某个列表项的警报对话框

时间:2016-05-04 21:59:55

标签: java android listview alertdialog android-listfragment

我在选择特定列表项时尝试显示警告对话框,而其他人则会打开一个新片段。但是,在插入恶意对话框代码后,将返回错误。我不明白为什么我在“故意”和“#39已经初始化了。可以采取哪些措施来解决这个问题?

  

变量'意图'可能尚未初始化

FragmentFruitChooser

import itertools

def find_expressions(digits, target):
    if not (isinstance(digits, str) or isinstance(digits, list)) or not isinstance(target, int):
        raise TypeError

    solutions = []
    operators = ('', ' + ', ' - ', ' * ', ' / ')
    for ops in itertools.product(operators, repeat=len(digits)-1):
        s = digits[0] + ''.join(op + digit for op, digit in zip(ops, digits[1:]))
        try:
            if eval(s) == target:
                solutions.append(s + ' == {}'.format(target))
        except (ZeroDivisionError, SyntaxError):
            pass
    print('\n'.join(solutions))

2 个答案:

答案 0 :(得分:1)

不太确定您的计划是如何运作的,但是在您的第二个else if声明中,您的intent未初始化,但仍然会调用startActivity(intent)

} else if (fruit.getFruit().equals(view.getResources().getString(R.string.tomato))) {
                        AlertDialog ad = new AlertDialog.Builder(getContext())
                                .create();
                        ad.setCancelable(false);
                        ad.setTitle("Seeded Fruit");
                        ad.setMessage("This fruit contains seeds.");
                        ad.setButton(context.getString(R.string.ok_text), new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        });
                        ad.show();
                    } else {
                        intent = new Intent(getActivity(), FruitAppleActivity.class);
                    }

                    startActivity(intent);

你可以做@seanAshmore的答案,但它仍然可能导致NPE。我建议在实际调用startActivity()之前简单地为intent添加一个null检查器,如下所示:

if (intent != null) {
                        startActivity(intent);
                    } else {
                        Log.d(FragmentFruitChooser.class.getSimpleName(), "Intent is null");
                    }

您可以为每个Intent intent = new Intent(...) / if / elif声明单独添加else,以确保正确无误。但是这是你的代码,所以你可以这样做。 :D希望这会有所帮助。祝好运。 :)

答案 1 :(得分:0)

试试Intent intent = null;而不是意图;这很难说,但我认为这应该可以解决你的问题 -