Java 将字符串从第一个活动传递到最后一个活动,但在开始最后一个活动之前运行另一个活动
我对Android非常陌生,如果问题重复,请避免并发送链接。 有三个活动A、B和C。活动A获取一个用户名,我想在活动C中显示该用户名,但我想先运行活动B,然后再运行活动C。使用intent的问题是我必须先运行C。如果单件、捆绑或包裹是解决方案,您能提供代码吗 活动AJava 将字符串从第一个活动传递到最后一个活动,但在开始最后一个活动之前运行另一个活动,java,android,android-activity,Java,Android,Android Activity,我对Android非常陌生,如果问题重复,请避免并发送链接。 有三个活动A、B和C。活动A获取一个用户名,我想在活动C中显示该用户名,但我想先运行活动B,然后再运行活动C。使用intent的问题是我必须先运行C。如果单件、捆绑或包裹是解决方案,您能提供代码吗 活动A public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState)
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText nameText = findViewById(R.id.nameText);
nameText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
String name = nameText.getText().toString();
return true;
}
});
}
活动B
public class qPage2 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_q_page2);
android.os.SystemClock.sleep(500);
}
}
活动C
public class lastPage extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_last_page);
}
}
这方面有很多选择:
Intent n = new Intent(FirstActivity.class,SecondActivity.class);
n.putExtra("name" , name);
n.startActivity();
要检索它,请执行以下操作:
Intent intent = getIntent();
String name = intent.getStringExtra("name");
2.创建一个静态类成员并访问它
class static StaticClass{
static name = " ";
}
在第一个活动中更新此变量,并在最后一个活动中检索它这比您想象的要简单。例如,如果要通过B将
Tasif
字符串从a发送到C
在活动A中
Intent intent = new Intent(A.this, B.class);
intent.putExtra("username", "Tasif");
startActivity(intent);
在活动B中
Intent intent = new Intent(B.this, C.class);
intent.putExtras(getIntent()); // Add this line, it will copy all data in intent which starts activity B (including `username`).
startActivity(intent);
在活动C中
String username = getIntent().getStringExtra("username");
将活动“A”中的
字符串声明为公共静态
,并将活动“A”中的字符串存储在其中
例如:活动A.java
public static String first = "hello";
然后在活动“C”中,将其称为
activity C.java
String last = A.first;
您可以将该字符串存储在SharedReferences
中,并可以在项目中的任何位置访问该字符串。如果您不熟悉SharedReferences
请阅读本文档一个简单明了的方法是使用SharedReferences数据存储选项。它用于保存一小部分数据,如键值对
将用户名保存在活动A中的SharedReferences中,如下所示:
SharedPreferences sharedPref = getSharedPreferences(
getString("MyKeyPairFileName"), Context.MODE_PRIVATE);
sharedPref.edit().putString("userKey", "Your username").apply;
从任何活动(B或C或D或…Z)中读取值,如下所示:
SharedPreferences sharedPref = getSharedPreferences(
getString("MyKeyPairFileName"), Context.MODE_PRIVATE);
String username = sharedPref.getString("userKey", null);
/*null is the default value, if value for the key is not available*/);
使用活动中的getSharedReferences
vsgetPreferences
时要小心。您可以阅读有关SharedReferences的更多信息,了解第一个选项-我想将其传递给第三个活动,如果使用您的代码,它会传递给第三个活动,然后第二个活动开始,然后第三个活动?将字符串传递给Middleton活动中的最后一个活动我知道,如果在A和C之间有多个活动,然后您必须通过所有活动进行编写,因此我想知道是否还有其他简短的方法。对于每个活动,您只需添加一行intent.putExtras(getIntent())
,如果您认为这不是一个好的解决方案,那么您可以使用SharedReferences
。但在我看来,我将坚持通过intent发送数据,因为我们不需要保存任何持久数据。这取决于你!