2015-05-18 34 views
1

我想在我的onNewIntent方法中爲任何Integer ArrayList構建一個動態對話窗口,例如[1,9, 13],但我正在逐漸此線builder.setMultiChoiceItems這個錯誤」AlertDialog.Builder類型中的setMultiChoiceItems(int,boolean [],DialogInterface.OnMultiChoiceClickListener)方法不適用

方法setMultiChoiceItems(INT,布爾[], DialogInterface.OnMultiChoiceClickListener)在類型 AlertDialog.Builder不適用於參數 (ArrayList的,null,new DialogInterface.OnMultiChoiceClickListener(){})

我很感激任何幫助。

onNewIntent方法:

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 

    setIntent(intent); 

    Bundle extras = getIntent().getExtras(); 
    if (extras != null) { 

     ArrayList<Integer> routeList = extras 
       .getIntegerArrayList("stop_route"); 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 

     builder.setTitle("Select"); 

     builder.setMultiChoiceItems(routeList, null, new DialogInterface.OnMultiChoiceClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which, boolean isChecked) { 


      } 
     }); 
     builder.setPositiveButton(android.R.string.ok, 
       new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int id) { 

        } 
       }); 
     builder.setNegativeButton(android.R.string.cancel, 
       new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int id) { 

        } 
       }); 


     builder.create(); 
     builder.show(); 

    } 

} 
+0

'setMultiChoi ceItems()'要求作爲第一個參數一個'int'不是'List ' http://developer.android.com/reference/android/app/AlertDialog.Builder.html – Sebastian

+0

你的第一個參數ArrayList 不匹配。沒有將ArrayList作爲輸入的setMultiChoiceItems函數。也許你的意思是字符串數組的資源ID?那必須在xml文件中。 http://developer.android.com/reference/android/app/AlertDialog.Builder.html – IdleGandalf

+0

@sebastian:這是否意味着我需要通過我的ArrayList循環?如果是,在哪裏? –

回答

0

您可以使用

public AlertDialog.Builder setMultiChoiceItems (CharSequence[] items, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener) 

只是轉換你的ArrayList<Interger>一個CharSequence[]

轉換:

ArrayList<Integer> routeList = extras.getIntegerArrayList("stop_route"); 
CharSequence charSequence [] = new CharSequence[routeList.size()]; 
for(int i = 0, size = routeList.size(); i < size; i++){ 
    charSequence[i] = String.valueOf(routeList.get(i)); 
} 

builder.setMultiChoiceItems(charSequence, null, new Dia .......... 
+0

我已經將它轉換爲CharSequence,像這樣'builder.setMultiChoiceItems(CharSequence [] cs,null,new DialogInterface.OnMultiChoiceClickListener()'但是我得到這個錯誤'語法錯誤,令牌錯誤, –

+0

請看看我的更新回答 – Sebastian

+0

Sebastian應用程序崩潰,我得到了'java.lang.ArrayStoreException:類型java.lang.Integer的源[0]不能存儲在java.lang.CharSequence類型的目標數組中[]' –

相關問題