Ich versuche, 5 Edittext-Werte in eine Arraylist
zu übergeben und dann an eine andere Aktivität zu senden. Ich benutze Absicht, um es zur nächsten Aktivität zu schicken, aber es stürzt immer weiter ab. Ich bekomme diese Fehlermeldung:Wie kann man mehrere Edittext-Werte an eine Arraylist übergeben und sie dann an eine andere Aktivität senden?
java.lang.NullPointerException: Attempt to read from null array
Ich denke, die Art, wie ich die Werte in die Arraylist hinzufügen, ist falsch oder etwas falsch mit den arraylist
in der Absicht, zu senden.
Aktivität 1:
EditText p1, p2, p3, p4, p5;
ArrayList<String> playerList = new ArrayList<>();
BootstrapButton btnStart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnStart = (BootstrapButton) findViewById(R.id.start);
p1 = (EditText) findViewById(R.id.player1);
p2 = (EditText) findViewById(R.id.player2);
p3 = (EditText) findViewById(R.id.player3);
p4 = (EditText) findViewById(R.id.player4);
p5 = (EditText) findViewById(R.id.player5);
playerList.add(p1.getText().toString());
playerList.add(p2.getText().toString());
playerList.add(p3.getText().toString());
playerList.add(p4.getText().toString());
playerList.add(p5.getText().toString());
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent myIntent = new Intent(MainActivity.this, GameActivity.class);
myIntent.putStringArrayListExtra("player_list", playerList);
MainActivity.this.startActivity(myIntent);
}
});
}
Aktivität 2:
TextView playerName;
ArrayList<String> playerList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
playerName = (TextView) findViewById(R.id.playerName);
Intent myIntent = getIntent();
if(myIntent != null){
playerList = myIntent.getStringArrayListExtra("player_list");
playerName.setText(playerList.get(0));
}
}
Wenn ich es so mit dem hartcodierten Array bin mit Werten, die sie nicht abstürzt und der Wert wird korrekt ausgedruckt werden in die nächste Aktivität.
Aktivität 1:
String[] array1={"asd","fgh","dcf","dg","ere","dsf"};
Intent myIntent = new Intent(MainActivity.this, GameActivity.class);
myIntent.putExtra("player_list", array1);
MainActivity.this.startActivity(myIntent);
Aktivität 2:
Intent myIntent = getIntent();
if(myIntent != null){
String[] players = myIntent.getStringArrayExtra("player_list");
playerName.setText(players[2]);
}else{
System.out.println("Error!");
}
Was ich will ein Arraylist
wie diese ["p1","p2","p3","p4","p5"]
ist zu tun haben und dann in die nächste Aktivität der arraylist
Abrufen und ein zufälliges Ausdrucken Name aus diesem Array.
Gibt es etwas in den Bearbeitungstexten? Sie erhalten sofort Werte aus den Bearbeitungstexten, sobald die Aktivität beginnt. Wenn in ihnen nichts enthalten ist, würden Sie im Wesentlichen leere Strings zu einem Array hinzufügen. – Rafa
wird 'playerList' deklariert? – Stardust
Auch, wenn Sie sie testen, verwenden Sie ein 'Array', und in Ihrer tatsächlichen Implementierung verwenden Sie eine' ArrayList' – Rafa