2011-01-18 4 views
-1

Я пытаюсь показать предупреждение внутри onTouchListener, но я не могу его показать. Я довольно новичок в этом, но я слежу за хорошими учебниками безрезультатно. Это часть кода ... любые идеи, почему это предупреждение не будет отображаться?диалоговое окно предупреждения Android не отображается

mSwitcher.setOnTouchListener(new OnTouchListener() 
{ 
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) 
    { 
    } 

    @Override public boolean onTouch(View v, MotionEvent event) 
    { 
     // the attempt at the alert 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setMessage("Are you sure you want to exit?") 
      .setCancelable(false) 
      .setPositiveButton("Yes", new DialogInterface.OnClickListener() 
       { 
        public void onClick(DialogInterface dialog, int id) 
        { 
         MyActivity.this.finish(); 
        } 
       }) 
      .setNegativeButton("No", new DialogInterface.OnClickListener() 
       { 
        public void onClick(DialogInterface dialog, int id) 
        { 
         dialog.cancel(); 
        } 
       }); 
     AlertDialog alert = builder.create(); 
     return false; 
    } 
}); 

Я думаю, что моя структура в порядке, но я даже не могу скомпилировать.

ответ

2

Я обновил код, чтобы скобки находятся в нужном месте. Он должен скомпилироваться сейчас. И, как указывает JLund, измените последнюю строку с builder.create(); на builder.show();, и это должно сработать. Если вы хотите сохранить звонок builder.create();, просто добавьте alert.show(); после него.

+0

спасибо миллиону :) – user580162

4

Try изменения

AlertDialog alert = builder.create(); 

в

AlertDialog alert = builder.show(); 
+0

Но нет никакой причины объявлять переменную предупреждения, поскольку она не используется внутри блока. – JLund

+0

просто используйте «builder.show();» и у вас нет проблем! –

0

Вы почти закончили для отображения диалогового предупреждения, но мне кажется, что вы забыли отображать AlertDialog, используйте show() из AlertDialog.

добавьте эту строку в конец вашего кода, но до return false; внутри onTouch().

alert.show();