Builder.show()上的DialogBu​​ilder致命异常

时间:2015-04-02 11:16:54

标签: android android-activity android-alertdialog fatal-error

LogCat告诉我我的应用程序无法显示窗口,因为#34;令牌null不适用于应用程序"。这是它遇到问题的代码:

                AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
            builder.setMessage("Er du sikker?\n" + taskList.get(position) +"\nvil starte med det samme hvis du trykker 'Ja'");
                    .setPositiveButton("Ja", dialogClickListener);
                    .setNegativeButton("Nej", dialogClickListener);
                    .show();

忽略丹麦语,仅供我们的用户使用。它在.show()上开始表现并抛出致命一击。我在整个StackOverflow上看到了同样的问题,并发现它在getApplicationContext()中可能是一个问题,但我还是无法弄清楚如何获得使用上下文。

如果您需要,我会留下一些应该在这里使用的代码。

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { //give our listView an onItemClickListener
        @Override
        public void onItemClick(AdapterView<?> parent, View view, final int position, long id) { //when you click on an item
            DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { //it should open a dialog but doesn't
                @Override
                public void onClick(DialogInterface dialog, int which) { //if you click
                    switch (which){ //"ja"
                        case DialogInterface.BUTTON_POSITIVE:

                            Intent i = new Intent(getApplicationContext(), PlayScreen.class); //start a new intent to open PlayScreen
                            i.putExtra("task", taskList.get(position)); //with the task out of the ArrayList that was clicked
                            startActivity(i);

                            break;

                        case DialogInterface.BUTTON_NEGATIVE: //nothing

                            break;
                    }
                }
            };

基本上我认为问题在于我不知道如何为builder提供所需的上下文。这可能与我不熟悉Android开发有关。

2 个答案:

答案 0 :(得分:1)

getApplicationContext()替换为this,假设thisActivityActivity继承自Context,您需要使用Activity来展示Dialog

答案 1 :(得分:0)

我是个白痴。

基本上我忘了我在ListView的上下文中使用它,这意味着我试图将它与一个活动一起使用。我从列表视图中获取了上下文..

lv.getContext()

很抱歉浪费你的时间,如果我只花了5分钟来确定我在代码中的位置......