Android AlertDialog,在contextmenu中动态更改textSize

时间:2011-09-18 03:23:19

标签: android text-size

在一项活动中,我有两个文本视图。在上下文菜单中,我有一个选项可以更改其中一个文本视图的文本大小。我试过这样的事情......

       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;    
          }
当我在放射线按钮中显示出“强制关闭”的消息时。我怎么解决这个问题? 谢谢..

1 个答案:

答案 0 :(得分:1)

您的应用崩溃是因为它试图访问items数组中具有负索引的元素。这是因为以下几行:

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

如果仔细查看DialogInterface.OnClickListener文档,您会发现其onClick()方法接受BUTTON_POSITIVEBUTTON_NEUTRALBUTTON_NEGATIVE这样的常量否定且未连接到列表项。