2015-09-16 78 views
-1

在我的提醒對話框中,我試圖突出顯示一個基於設備設置語言的特定單選按鈕,但我不確定要添加什麼代碼才能實現這個。問題在於我認爲必須解決的問題。需要做些什麼來解決這個問題?對話框中的單選按鈕沒有被自動選中

例如當我的設備語言設置爲英語時,我希望選擇「英文」單選按鈕。

public class MainActivity extends AppCompatActivity { 

    AlertDialog languageDialog; 
    Context context = this; 
    int i; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     final Button button0 = (Button) findViewById(R.id.button0); 
     button1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 

       if (Locale.getDefault().equals(Locale.ENGLISH)) { 
        ? 
       } 

       final CharSequence[] items = { 
         getResources().getString(R.string.english), 
         getResources().getString(R.string.french), 
         getResources().getString(R.string.japanese) 
       }; 

       AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
       builder.setTitle(R.string.language); 

       builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int item) { 
         i = item; 
        } 
       }); 

       languageDialog = builder.create(); 
       languageDialog.show(); 
      } 
     }); 
    } 
} 

enter image description here

回答

1

setSingleChoiceItems第二個參數是你設置所選項目。因此,讓我們找出與設備當前語言相對應的items的索引。

int defaultLang = -1; 
for(int i = 0; i < items.length; i++) { 
    if(items[i].toString().equalsIgnoreCase(Locale.getDefault().getDisplayLanguage())) { 
     defaultLang = i; 
     break; 
    } 
} 

然後,只需設置對話框中的項目與此索引

builder.setSingleChoiceItems(items, defaultLang, new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int item) { 
     i = item; 
    } 
}); 
+1

for循環初始化了'items'陣列後應該去,和你打電話之前'setSingleChoiceItems' –

+0

確定。每當我改變語言時,當我再次點擊佈局按鈕時,必要的單選按鈕項不會被選中。 – MacaronLover

+1

嘗試將'.equals'更改爲'.equalsIgnoreCase' –

相關問題