使用 AlertDialog 输入填充列表 <String>
Populate List<String> with AlertDialog Input
构建我的第一个应用程序,我自己找不到解决方案。
我的应用程序做什么:
- MainActivity 提示用户输入玩家数量
- 按下确定,输入传递给下一个 activity
现在我想要提示用户输入玩家名称,使用 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, "Error@: ", e);
}
}
}
我得到这个异常 @ builder.show()
;
Java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
它在没有 for 循环的情况下工作,除了一个小问题。
当我将输入字段设置为 setSingleLine();
时,listView
保持为空。
您正在创建一个 AlertDialog.Builder
并使用不同的值重复设置标题、视图和肯定按钮。您可能需要将此逻辑移动到 for
循环中:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
final EditText input = new EditText(getBaseContext());
input.setTextColor(Color.BLACK);
//input.setSingleLine();
构建我的第一个应用程序,我自己找不到解决方案。
我的应用程序做什么:
- MainActivity 提示用户输入玩家数量
- 按下确定,输入传递给下一个 activity
现在我想要提示用户输入玩家名称,使用 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, "Error@: ", e);
}
}
}
我得到这个异常 @ builder.show()
;
Java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
它在没有 for 循环的情况下工作,除了一个小问题。
当我将输入字段设置为 setSingleLine();
时,listView
保持为空。
您正在创建一个 AlertDialog.Builder
并使用不同的值重复设置标题、视图和肯定按钮。您可能需要将此逻辑移动到 for
循环中:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
final EditText input = new EditText(getBaseContext());
input.setTextColor(Color.BLACK);
//input.setSingleLine();