0

構建我的第一個應用程序,但無法自行找到解決方案。使用AlertDialog填充列表<String>輸入

什麼我的應用程序的功能:

  • MainActivity提示用戶傳遞到下一個活動

現在我想輸入播放量

  • 按下OK,輸入,用戶被提示輸入玩家的名字,與AlertDialog一個接一個。這些名稱應該存儲在一個數組中。

    我迄今爲止代碼:

    public class MainScreen extends AppCompatActivity { 
    
        private static final String TAG = MainScreen.class.getSimpleName(); 
    
        @Override 
        protected void onCreate(Bundle savedInstanceState) { 
         super.onCreate(savedInstanceState); 
         setContentView(R.layout.activity_main_screen); 
    
         try { 
    
          Intent intent = getIntent(); 
          final int sumPlayers = getIntent().getIntExtra("sumPlayers", 0); 
          final List<String> playerNames = new ArrayList<>(); 
    
          AlertDialog.Builder builder = new AlertDialog.Builder(this); 
          final EditText input = new EditText(getBaseContext()); 
          input.setTextColor(Color.BLACK); 
          //input.setSingleLine(); 
    
          for (int c=0; c<sumPlayers; c++) { 
    
           builder.setTitle("Input Player Name"); 
           builder.setView(input); 
    
           builder.setPositiveButton("ADD", new DialogInterface.OnClickListener() { 
            @Override 
            public void onClick(DialogInterface dialog, int which) { 
             playerNames.add(input.getText().toString()); 
            } 
           }); 
    
           builder.show(); 
          } 
    
          ArrayAdapter<String> playerAdapter = new ArrayAdapter<String>(this, R.layout.player_list_item, R.id.editText, playerNames); 
          ListView listView = (ListView) findViewById(R.id.listView_main); 
    
          listView.setAdapter(playerAdapter); 
    
         } catch (Exception e) { 
          System.out.println("2te Act"); 
          Log.e(TAG, "[email protected]: ", e); 
         } 
        } 
    } 
    

    我得到這個異常@builder.show();

    Java.lang.IllegalStateException:指定的子項已具有父項。您必須先調用子對象的父對象的removeView()。

    它的工作沒有for循環,除了一個小問題。 當我將輸入字段設置爲setSingleLine();時,listView保持空白。

  • 回答

    1

    您正在創建一個AlertDialog.Builder並重復使用不同的值設置標題,視圖和正面按鈕。您可能需要在for循環內移動此邏輯:

     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
         final EditText input = new EditText(getBaseContext()); 
         input.setTextColor(Color.BLACK); 
         //input.setSingleLine();