2011-09-18 43 views
0

在活動中,我有兩個文本視圖。在上下文菜單中,我可以選擇更改其中一個文本視圖的文本大小。我試過這樣的事情..Android AlertDialog在contextmenu中動態更改textSize

 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

您的應用崩潰,因爲它試圖訪問items陣列中具有負索引的元素。這是因爲這些行:

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

如果你仔細看DialogInterface.OnClickListener文檔中,你會發現,它的onClick()方法接受這樣的常量爲BUTTON_POSITIVEBUTTON_NEUTRALBUTTON_NEGATIVE所有爲負,而沒有連接到列表項。