2015-09-10 45 views
0

我有一個字符串數組在我的Android資源:創建Android上SingleChoiceItems對話與鍵 - >價值

<string-array name="retry_delay_entry_values2" translatable="false"> 
    <item name="blabla 1">5</item> 
    <item name="blabla 2">10</item> 
    <item name="blabla 3">30</item> 
</string-array> 

我想創建基於此模型的alertdialog:http://i.stack.imgur.com/l0ec3.png

我創建

public Dialog onCreateDialog() { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("blablabla") 
      .setSingleChoiceItems(R.array.retry_delay_entry_values2, -1, 
        new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          Toast.makeText(getApplicationContext(), "the value: "+which, Toast.LENGTH_LONG).show(); 
         } 
        }) 
      .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int id) { 
       } 
      }) 
      .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int id) { 
       } 
      }); 

    return builder.create(); 
} 

而我希望當我在窗口中單擊「blabla 1」時,它顯示敬酒:「值:5」。但實際上它顯示「值:0」,因爲這是列表中的第一項。

我該如何解決這個問題?

回答

0

我試過你的問題,它在我身邊工作正常..你可以請嘗試乾淨的項目,並再次運行。

Dialog dialog = onCreateDialog(); 
    dialog.show(); 

方法

public Dialog onCreateDialog() { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle("blablabla") 
       .setSingleChoiceItems(R.array.retry_delay_entry_values2, -1, 
         new DialogInterface.OnClickListener() { 
          @Override 
          public void onClick(DialogInterface dialog, int which) { 
           Toast.makeText(getApplicationContext(), "the value: " + which, Toast.LENGTH_LONG).show(); 
          } 
         }); 


     return builder.create(); 
    } 

陣列

<string-array name="retry_delay_entry_values2" translatable="false"> 
     <item name="blabla 1">5</item> 
     <item name="blabla 2">10</item> 
     <item name="blabla 3">30</item> 
    </string-array> 
0

變量which只給你的指標不是值。

爲了讓你不得不使用這個

getResources().getStringArray(R.array.retry_delay_entry_values2)[which] 

這樣

.setSingleChoiceItems(R.array.retry_delay_entry_values2, -1, 
       new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         Toast.makeText(getApplicationContext(), "the value: "+ 
          getResources().getStringArray(R.array.retry_delay_entry_values2)[which], 
          Toast.LENGTH_LONG).show(); 
        } 
       })