我是Android的新手,如果重复该问题,请避免并发送链接。 活动A,B和C共有三个。活动A获取一个要在活动C中显示的用户名,但我想先运行活动B,然后再运行活动C。使用意图的问题是我必须运行C第一。如果是单件式,成捆式或可包裹式,您可以提供代码吗?
活动A
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);
}
}
答案 0 :(得分:1)
这比您想象的要容易。例如,如果您想通过B从A向C发送Tasif
字符串。
活动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");
答案 1 :(得分:0)
有很多选择:
第一个选项的代码: 为意图增值
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 = " ";
}
在第一个活动中更新此变量,并在最后一个活动中检索它
答案 2 :(得分:0)
将活动“ A”中的String
声明为public static
,并从活动“ A”中将字符串存储在其中。
例如:活动A.java
public static String first = "hello";
然后在活动“ C”中将其命名为
活动C.java
String last = A.first;
答案 3 :(得分:0)
您可以将该字符串存储在SharedPreferences
中,并且可以在项目中的任何位置访问该字符串。如果您不熟悉SharedPreferences
,请阅读此SharedPrefernces Link
答案 4 :(得分:0)
一种简单干净的方法是使用SharedPreferences数据存储选项。它用于保存少量数据,例如键值对。
按以下活动A中的方式将用户名保存在SharedPreferences中:
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*/);
在Activity中使用getSharedPreferences
与getPreferences
时要小心。您可以阅读有关SharedPreferences here