将数据从第二个 activity 传递到第三个 activity
Passing data from second activity to third activity
在这个程序中,我有三个活动 Main、Second 和 Third。当应用程序打开时,有一个空白的文本视图和按钮。选择该按钮会将您带到第二个 activity,用户可以在其中输入姓名、phone 号码和电子邮件地址。填写完这些表格后,用户将点击一个按钮来存储该信息并将它们带回主 activity。当返回主 activity 时,用户将看到他们输入的名称显示在曾经空白的文本视图中。然后,他们可能 select 文本视图会将他们带到第三个 activity,显示他们在第二个 activity 中输入的姓名、phone 号码和电子邮件地址。
除了将数据从第二个 activity 传递到第三个之外,我一切正常。我做了一些研究,发现可以使用捆绑包和共享首选项做很多事情。我对他们不太熟悉,因为这对我来说很陌生。我确实尝试过实施它们,但没有任何运气。无论如何,代码在下面,我们将不胜感激任何帮助、反馈或指导。先感谢您!
主要Activity:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View view){
startActivityForResult(new Intent(getApplicationContext(),SecondActivity.class),999);
}
public void onClickText(View v)
{
startActivityForResult(new Intent(getApplicationContext(),ThirdActivity.class),999);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 999 && resultCode == RESULT_OK)
{ TextView contactView = (TextView) findViewById(R.id.contactDisplay);
contactView.setText(data.getStringExtra("Name"));
}
}}
第二个Activity:
public class SecondActivity extends AppCompatActivity {
public String textName;
public String emailAddress;
public int phoneNumber;
private TextView textNameView2;
EditText textPersonName;
EditText number;
EditText textEmailAddress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
public void onClickTwo(View view)
{
textPersonName = (EditText) findViewById(R.id.name);
number = (EditText) findViewById(R.id.number);
textEmailAddress = (EditText) findViewById(R.id.email);
textName = textPersonName.getText().toString();
emailAddress = textEmailAddress.getText().toString();
phoneNumber = Integer.valueOf(number.getText().toString());
showToast(textName +"added");
Intent backMain = new Intent(this, MainActivity.class);
// Intent backMain = new Intent();
backMain.putExtra("Name",textName);
// backMain.putExtra("Email", emailAddress);
// backMain.putExtra("Phone", phoneNumber);
setResult(RESULT_OK, backMain);
Intent thirdMain = new Intent(this, ThirdActivity.class);
thirdMain.putExtra("Name",textName);
thirdMain.putExtra("Email",emailAddress);
thirdMain.putExtra("Phone",phoneNumber);
setResult(RESULT_OK,thirdMain);
finish();
}
private void showToast(String text)
{
Toast.makeText(this,text, Toast.LENGTH_LONG).show();
}}
第三个Activity:
public class ThirdActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 999 && resultCode == RESULT_OK) {
TextView contact = (TextView) findViewById(R.id.contactNameView);
contact.setText(data.getStringExtra("Name"));
TextView phone = (TextView) findViewById(R.id.phoneView);
phone.setText(data.getStringExtra("Phone"));
TextView email = (TextView) findViewById(R.id.emailView);
email.setText(data.getStringExtra("Email"));
}
}
}
关注此线程,了解使用 intent 在活动之间传递数据:
How do I pass data between Activities in Android application?
但是,如果您想使用共享首选项传递数据,请使用此代码段:
public class SharedPreferenceManager {
private static final String PREFS_NAME = Config.SHARED_PREF_NAME;
/**
* @param context
* @param key
* @param value
* @return
*/
public static boolean saveToPreference(Context context, String key, String value) {
SharedPreferences settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString(key, value);
return editor.commit();
}
/**
* @param context
* @param key
* @return
*/
public static String loadFromPreference(Context context, String key) {
SharedPreferences settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
return settings.getString(key, "");
}
}
要保存到首选项,您需要传入应用程序上下文、要保存的键和字符串。要从 SharedPreference 加载已保存的字符串,您传入 Context 和 activity 中的 Key 假设我想在一个 activity 中将字符串电子邮件保存到我的共享首选项,然后将其加载到另一个 activity 中,这是我会怎么做:
//Save to shared Preference in Activity A
SharedPreferenceManager.saveToPreference(this, "email", emailAddress.getText().toString());
//Load from shared preference in activity b
String emailAddress = SharedPreferenceManager.loadFromPreference(this, "email");
在这个程序中,我有三个活动 Main、Second 和 Third。当应用程序打开时,有一个空白的文本视图和按钮。选择该按钮会将您带到第二个 activity,用户可以在其中输入姓名、phone 号码和电子邮件地址。填写完这些表格后,用户将点击一个按钮来存储该信息并将它们带回主 activity。当返回主 activity 时,用户将看到他们输入的名称显示在曾经空白的文本视图中。然后,他们可能 select 文本视图会将他们带到第三个 activity,显示他们在第二个 activity 中输入的姓名、phone 号码和电子邮件地址。
除了将数据从第二个 activity 传递到第三个之外,我一切正常。我做了一些研究,发现可以使用捆绑包和共享首选项做很多事情。我对他们不太熟悉,因为这对我来说很陌生。我确实尝试过实施它们,但没有任何运气。无论如何,代码在下面,我们将不胜感激任何帮助、反馈或指导。先感谢您!
主要Activity:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View view){
startActivityForResult(new Intent(getApplicationContext(),SecondActivity.class),999);
}
public void onClickText(View v)
{
startActivityForResult(new Intent(getApplicationContext(),ThirdActivity.class),999);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 999 && resultCode == RESULT_OK)
{ TextView contactView = (TextView) findViewById(R.id.contactDisplay);
contactView.setText(data.getStringExtra("Name"));
}
}}
第二个Activity:
public class SecondActivity extends AppCompatActivity {
public String textName;
public String emailAddress;
public int phoneNumber;
private TextView textNameView2;
EditText textPersonName;
EditText number;
EditText textEmailAddress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
public void onClickTwo(View view)
{
textPersonName = (EditText) findViewById(R.id.name);
number = (EditText) findViewById(R.id.number);
textEmailAddress = (EditText) findViewById(R.id.email);
textName = textPersonName.getText().toString();
emailAddress = textEmailAddress.getText().toString();
phoneNumber = Integer.valueOf(number.getText().toString());
showToast(textName +"added");
Intent backMain = new Intent(this, MainActivity.class);
// Intent backMain = new Intent();
backMain.putExtra("Name",textName);
// backMain.putExtra("Email", emailAddress);
// backMain.putExtra("Phone", phoneNumber);
setResult(RESULT_OK, backMain);
Intent thirdMain = new Intent(this, ThirdActivity.class);
thirdMain.putExtra("Name",textName);
thirdMain.putExtra("Email",emailAddress);
thirdMain.putExtra("Phone",phoneNumber);
setResult(RESULT_OK,thirdMain);
finish();
}
private void showToast(String text)
{
Toast.makeText(this,text, Toast.LENGTH_LONG).show();
}}
第三个Activity:
public class ThirdActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 999 && resultCode == RESULT_OK) {
TextView contact = (TextView) findViewById(R.id.contactNameView);
contact.setText(data.getStringExtra("Name"));
TextView phone = (TextView) findViewById(R.id.phoneView);
phone.setText(data.getStringExtra("Phone"));
TextView email = (TextView) findViewById(R.id.emailView);
email.setText(data.getStringExtra("Email"));
}
}
}
关注此线程,了解使用 intent 在活动之间传递数据:
How do I pass data between Activities in Android application?
但是,如果您想使用共享首选项传递数据,请使用此代码段:
public class SharedPreferenceManager {
private static final String PREFS_NAME = Config.SHARED_PREF_NAME;
/**
* @param context
* @param key
* @param value
* @return
*/
public static boolean saveToPreference(Context context, String key, String value) {
SharedPreferences settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString(key, value);
return editor.commit();
}
/**
* @param context
* @param key
* @return
*/
public static String loadFromPreference(Context context, String key) {
SharedPreferences settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
return settings.getString(key, "");
}
}
要保存到首选项,您需要传入应用程序上下文、要保存的键和字符串。要从 SharedPreference 加载已保存的字符串,您传入 Context 和 activity 中的 Key 假设我想在一个 activity 中将字符串电子邮件保存到我的共享首选项,然后将其加载到另一个 activity 中,这是我会怎么做:
//Save to shared Preference in Activity A
SharedPreferenceManager.saveToPreference(this, "email", emailAddress.getText().toString());
//Load from shared preference in activity b
String emailAddress = SharedPreferenceManager.loadFromPreference(this, "email");