Android Studio用Java实现单按钮传递EditText值到两个Activity
问题根因
你在TwoTeam页面创建的指向Begindup的Intent没有被实际启动,最终打开Begindup的是BeginAfter计时器结束后创建的新Intent,这个Intent没有携带任何你需要的参数,所以Begindup拿不到数据。
你需要按照页面跳转链路逐层传递参数,修改方案如下:
1. 修改Begin页面的start_button跳转逻辑,把接收到的参数传给BeginAfter
public void start_button(View view) { Intent intent = new Intent(this, BeginAfter.class); // 把从TwoTeam拿到的参数继续传递到下一页 intent.putExtra("name1", name_first); intent.putExtra("name2", name_second); startActivity(intent); }
2. 修改BeginAfter页面逻辑,接收参数后在计时结束时传给Begindup
public class BeginAfter extends AppCompatActivity { TextView textView; // 新增变量存储要传递的参数 String nameFirst, nameSecond; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_begin_after); textView = findViewById(R.id.timer); // 接收从Begin页面传过来的参数 nameFirst = getIntent().getStringExtra("name1"); nameSecond = getIntent().getStringExtra("name2"); long duration = TimeUnit.MINUTES.toMillis(1); new CountDownTimer(duration, 1000) { @Override public void onTick(long l) { String sDuration = String.format(Locale.ENGLISH, "%01d", TimeUnit.MILLISECONDS.toSeconds(l) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(l))); textView.setText(sDuration); } @Override public void onFinish() { // 跳转Begindup时携带所有需要的参数 Intent intent = new Intent(BeginAfter.this, Begindup.class); intent.putExtra("name1", nameFirst); intent.putExtra("name2", nameSecond); intent.putExtra("turn2", nameSecond + "'s Turn"); startActivity(intent); } }.start(); } }
3. 清理TwoTeam页面无用代码
TwoTeam页面中你创建的指向Begindup的Intent完全没有被使用,可以直接删除,修改后的submit_button方法如下:
public void submit_button(View view) { name_first = first_name.getText().toString(); name_second = second_name.getText().toString(); Intent intent = new Intent(TwoTeam.this, Begin.class); intent.putExtra("name1", name_first); intent.putExtra("name2", name_second); intent.putExtra("turn1", name_first + "'s Turn"); startActivity(intent); }
内容的提问来源于stack exchange,提问作者user16240688
相关产品推荐
相关产品推荐

