2017-02-17 107 views
0

我在AlertDialog的內部有一個Spinner,但是每當我在微調框內選擇一個值時,一旦微調框關閉,它就不會顯示。 我的onItemSelected不記錄任何東西到控制檯(我已確認日誌方法不是破損的方法)。嵌套0​​是嘗試解決此問題,儘管它沒有奏效。AlertDialog中的Android微調不會選擇

Spinner selector = new Spinner(XActivity.this); 
              selector.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
              selector.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
               @Override 
               public void onItemSelected(final AdapterView<?> adapterView, View view, final int i, long l) { 
                runOnUiThread(new Runnable() { 
                 @Override 
                 public void run() { 
                  X.getInstance().log("Selected item : " + adapterView.getItemAtPosition(i)); 
                 } 
                }); 
               } 

               @Override 
               public void onNothingSelected(AdapterView<?> adapterView) { 

               } 
              }); 

              ArrayAdapter<String> dataAdapter = new ArrayAdapter<>(RegisterActivity.this, android.R.layout.simple_spinner_item, LIST); 
              dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
              selector.setAdapter(dataAdapter); 
              selector.setPrompt("*removed*"); 
              dataAdapter.notifyDataSetChanged(); 

              AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(XActivity.this); 
              dialogBuilder.setView(selector); 

              dialogBuilder.setTitle("*removed*"); 
              dialogBuilder.setMessage("*removed*"); 
              dialogBuilder.setPositiveButton("Set", new DialogInterface.OnClickListener() { 
               public void onClick(DialogInterface dialog, int whichButton) { 
                String selected = String.valueOf(selector.getSelectedItem()); 
                X.getInstance().log("User selected " + selected + ""); 
               } 
              }); 
              dialogBuilder.setNegativeButton("Select Later", new DialogInterface.OnClickListener() { 
               public void onClick(DialogInterface dialog, int whichButton) { 
                // TODO             } 
              }); 
              dialogBuilder.setOnDismissListener(new DialogInterface.OnDismissListener() { 
               @Override 
               public void onDismiss(DialogInterface dialogInterface) { 
                // TODO 
               } 
              }); 
              AlertDialog b = dialogBuilder.create(); 
              b.show(); 

編輯:截圖

enter image description here enter image description here

+0

你能顯示截圖嗎? – TruongHieu

+0

@TruongHieu截圖添加。這就是它的樣子,一旦我點擊「冒險」,它基本上關閉了微調,並沒有選擇任何東西。 –

+0

我剛剛檢查了你的代碼,我用簡單的Log.d()替換了你的X.getInstance().log(),並通過刪除你的dialogBu​​ilder.setButtons =它工作正常 – TWL

回答

1

複製你的代碼,使一些小的/簡化調整,我發現沒有什麼異常吧,做工精細!

  Spinner selector = new Spinner(MainActivity.this); 
      selector.setLayoutParams(new LinearLayout.LayoutParams(
        ViewGroup.LayoutParams.MATCH_PARENT, 
        ViewGroup.LayoutParams.WRAP_CONTENT)); 
      selector.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
       @Override 
       public void onItemSelected(final AdapterView<?> adapterView, View view, final int i, long l) { 
        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          Log.d(TAG, adapterView.getItemAtPosition(i).toString()); 
         } 
        }); 
       } 

       @Override 
       public void onNothingSelected(AdapterView<?> adapterView) { 

       } 
      }); 

      ArrayAdapter<String> dataAdapter = new ArrayAdapter<>(MainActivity.this, 
        android.R.layout.simple_spinner_item, 
        new String[]{"a","b","c"}); 
      dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      selector.setAdapter(dataAdapter); 
      dataAdapter.notifyDataSetChanged(); 

      AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MainActivity.this); 
      dialogBuilder.setView(selector); 
      dialogBuilder.setTitle("title"); 
      dialogBuilder.setMessage("message"); 
      AlertDialog b = dialogBuilder.create(); 
      b.show(); 

我的日誌顯示「a」,「b」,「c」,因爲我選擇它們。

請追蹤您的步驟,並在您重新構建我的代碼以符合您的要求時進行測試。

編輯:

List<String> LIST = new ArrayList<>(); 
LIST.add("a"); 
LIST.add("b"); 
LIST.add("c"); 

並使用LIST代替new String[]{}也工作得很好。

+0

看起來像在String []上使用我的列表會導致我的問題。謝謝! –

+0

使用列表不應該導致任何問題,我只是嘗試過,以及... – TWL