Android开发:如何将首个Activity的TextView数据传递至第三个Activity
把第一个Activity的随机字符串传到第三个Activity?看这几步就搞定!
你现在的需求是走「Activity1 → Activity2 → Activity3」的流程,把第一个Activity里生成的随机字符串传递到最终的第三个Activity对吧?目前你代码里有直接从Activity1跳转到第三个Activity的方法,但实际是要经过第二个Activity中转,那咱们只需要在中间的第二个Activity里把数据“接力”传递下去就可以了,具体操作步骤如下:
步骤1:完善第二个Activity,接收并传递数据
首先你需要补全第二个Activity(CheckCandidateID)的代码——先接收来自第一个Activity的字符串,然后在点击跳转按钮时,把这个字符串再传给第三个Activity。
假设你的第二个Activity布局里有一个用于跳转的按钮goToThirdBtn,那代码可以这么写:
import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class CheckCandidateID extends AppCompatActivity { private Button goToThirdBtn; private String receivedRandomStr; // 存储从第一个Activity拿到的随机字符串 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_check_candidate_id); // 第一步:接收来自第一个Activity的随机字符串 receivedRandomStr = getIntent().getStringExtra("Extra_Message"); // 第二步:给跳转按钮设置点击事件,把数据传给第三个Activity goToThirdBtn = findViewById(R.id.goToThirdBtn); goToThirdBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intentToThird = new Intent(CheckCandidateID.this, Try.class); // 用和第三个Activity接收时对应的键名传递数据 intentToThird.putExtra("Extra_Message_Send", receivedRandomStr); startActivity(intentToThird); } }); } }
步骤2:确认第一个Activity的跳转逻辑(无需修改)
你第一个Activity里的sendID_one()、sendID_Two()、sendID_Three()方法已经正确把对应的随机字符串传递给第二个Activity了,这部分完全没问题,比如sendID_one()的代码:
public void sendID_one(){ String message = randomOne.getText().toString(); Intent check = new Intent(SelectRandomNumber.this, CheckCandidateID.class); check.putExtra("Extra_Message",message); startActivity(check); }
步骤3:第三个Activity的接收逻辑(无需修改)
你第三个Activity(Try)的代码已经能正确接收传递过来的字符串了,这部分保持原样就行:
import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class Try extends AppCompatActivity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_try); tv = (TextView) findViewById(R.id.test); String s = getIntent().getStringExtra("Extra_Message_Send"); tv.setText(s); } }
小提醒
- 要注意传递和接收数据时的键名要完全一致,比如这里的
Extra_Message(第一个到第二个)和Extra_Message_Send(第二个到第三个),写错的话会拿到null哦。 - 如果第二个Activity还有其他业务逻辑,只需要保证在跳转第三个Activity时,把存储的
receivedRandomStr传过去就可以了。
内容的提问来源于stack exchange,提问作者aashik
相关产品推荐
相关产品推荐

