[英]Pass ListView values to multiple EditText in another Activity
[英]How to pass multiple edittext values into a Arraylist and then send it to another activity?
我試圖將5個edittext值傳遞到Arraylist
,然后將其發送到另一個活動。 我使用Intent將其發送到下一個活動,但是它一直崩潰。 我收到此錯誤:
java.lang.NullPointerException:嘗試從空數組讀取
我認為我將值添加到arraylist的方式是錯誤的,或者在意圖中發送arraylist
出現了問題。
活動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);
}
});
}
活動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));
}
}
當我將其與硬編碼數組值一起使用時,它不會崩潰,並且該值將在下一個活動中正確打印出來。
活動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);
活動2:
Intent myIntent = getIntent();
if(myIntent != null){
String[] players = myIntent.getStringArrayExtra("player_list");
playerName.setText(players[2]);
}else{
System.out.println("Error!");
}
我想要做的是擁有一個像這樣的Arraylist
["p1","p2","p3","p4","p5"]
,然后在下一個活動中檢索該arraylist
並從該數組中打印出一個隨機名稱。
使用getStringArrayListExtra
而不是getStringArrayExtra
if(myIntent != null){
String[] players = myIntent.getStringArrayListExtra("player_list");
playerName.setText(players[2]);
}
在活動1中使用intent.putStringArrayListExtra
發送並在活動2中使用getStringArrayListExtra()
檢索字符串ArrayList。
這是這樣做的代碼:
活動1:
@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);
}
});
}
活動2:
@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){
ArrayList<String> players = myIntent.getStringArrayListExtra("player_list");
playerName.setText(players.get(0));
}else{
System.out.println("Error!");
}
}
還要確保playerList被聲明和初始化。 您的代碼沒有顯示它已被聲明或初始化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.