Android AlertDialog с динамически изменяемым размером текста в контекстном меню - PullRequest
0 голосов
/ 18 сентября 2011

В упражнении у меня есть два текстовых представления.В контекстном меню у меня есть варианты изменить размер текста одного из текстовых представлений.Я пробовал что-то вроде этого ..

       public boolean onOptionsItemSelected(MenuItem item){
          switch (item.getItemId()){
                  case R.id.menutextSize:
                    final CharSequence[] items = {"Normal","Large","Larger"};
                    AlertDialog.Builder builder = new      

           AlertDialog.Builder(this);
                    builder.setTitle("Select TextSize");
                    builder.setSingleChoiceItems(items, -1, 
                            new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int item) {
                            Toast.makeText(getApplicationContext(), items[item],
                                    Toast.LENGTH_SHORT).show();
                        }
                    });

                    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {

                            int textSize = (int)mBodyText.getTextSize();  
                            if (items[whichButton] == "Normal")    
                            {
                                mTextv.setTextSize(12);
                            }
                            if (items[whichButton] == "Large")    
                            {
                                mTextv.setTextSize(14);
                            }
                            if (items[whichButton] == "Larger")    
                            {
                                mTextv.setTextSize(16);
                            }




                        }
                    });
                    builder.setNegativeButton("cancel", null);
                    builder.show();
                    return true;    
          }

t, когда я нажимаю на кнопку радио, она показывает сообщение "Force close".Как я могу решить это?Спасибо ..

1 Ответ

1 голос
/ 18 сентября 2011

Ваше приложение падает, потому что оно пытается получить доступ к элементу с отрицательным индексом в массиве items.Это происходит из-за этих строк:

if (items[whichButton] == "...")

Если вы внимательно посмотрите документацию DialogInterface.OnClickListener , вы заметите, что его метод onClick() принимает такие константы как BUTTON_POSITIVE, BUTTON_NEUTRAL и BUTTON_NEGATIVE, которые являются отрицательными и не связаны с элементами списка.

...