【发布时间】:2019-03-30 15:15:38
【问题描述】:
我正在开发一个有 3 项活动的项目。每个活动都有自己的按钮,单击该按钮会启动下一个活动。第一个活动有一个显示随机字符串的文本视图。当我在第一个活动中按下按钮时,第二个活动将开始。当我在第二个活动中按下按钮时,第三个活动开始了。但我想知道如何将随机字符串从第一个活动发送到第三个活动。
第一个活动:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.Random;
public class SelectRandomNumber extends AppCompatActivity {
private Button generateStringBtn;
private TextView randomOne;
private TextView randomTwo;
private TextView randomThree;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_random_number);
generateStringBtn = (Button) findViewById(R.id.generateRandomBtn);
randomOne = (TextView) findViewById(R.id.randomStringOne);
randomTwo = (TextView) findViewById(R.id.randomStringTwo);
randomThree = (TextView) findViewById(R.id.randomStringThree);
generateStringBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
randomOne.setText(randomString(173));
randomTwo.setText(randomString(173));
randomThree.setText(randomString(173));
}
});
randomOne.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
sendID_one();
}
});
}
public String randomString(int length){
char[] chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".toCharArray();
StringBuilder stringBuilder = new StringBuilder();
Random random = new Random();
for(int i = 0; i < length; i++){
char c = chars[random.nextInt(chars.length)];
stringBuilder.append(c);
}
return stringBuilder.toString();
}
public void sendID_one(){
String message = randomOne.getText().toString();
Intent check = new Intent(SelectRandomNumber.this, CheckCandidateID.class);
check.putExtra("Extra_Message",message);
startActivity(check);
}
public void sendID_Two(){
String message = randomTwo.getText().toString();
Intent check = new Intent(SelectRandomNumber.this, CheckCandidateID.class);
check.putExtra("Extra_Message",message);
startActivity(check);
}
public void sendID_Three(){
String message = randomThree.getText().toString();
Intent check = new Intent(SelectRandomNumber.this, CheckCandidateID.class);
check.putExtra("Extra_Message",message);
startActivity(check);
}
public void send(){
Intent check = new Intent(SelectRandomNumber.this, Try.class); //for sending data to third activity
check.putExtra("Extra_Message_Send",randomOne.getText().toString());
startActivity(check);
}
}
第三个活动:
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);
}
}
【问题讨论】:
-
使用
intent.. -
@JohnJoe 那么第一个活动应该有 2 个 Intent 吗?一个用于第二个活动,另一个用于第三个活动?
-
你也可以使用 sharedPreferences
-
不要使用 SharedPreferences 在活动之间进行通信,除非它实际上是,呃,偏好是要在键值存储中持久保存到磁盘。像用户选择的过滤器类别 ID 等。
标签: java android android-activity