Android 如何将额外的意图传递给两个活动
我有一个应用程序,在第一个活动中询问第二页上的人员姓名,在第三个、第四个或第九个活动中显示姓名,我想在第三个、第四个或第九个活动中使用该姓名,我如何正确地声明该姓名(公开?),并在需要时何地调用该姓名?这是我发送的代码 主要 这是活动2接收它Android 如何将额外的意图传递给两个活动,android,android-intent,getstring,Android,Android Intent,Getstring,我有一个应用程序,在第一个活动中询问第二页上的人员姓名,在第三个、第四个或第九个活动中显示姓名,我想在第三个、第四个或第九个活动中使用该姓名,我如何正确地声明该姓名(公开?),并在需要时何地调用该姓名?这是我发送的代码 主要 这是活动2接收它 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layo
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
t = (TextView)findViewById(R.id.textView3);
Typeface font_b = Typeface.createFromAsset(getAssets(),"fonts/MarkerFelt.ttf");
t.setTypeface(font_b);
String n = this.getIntent().getStringExtra("NAMEDATA");
t.setText(n);
那么,我该如何重用它呢?使用SharedReferences保存名称或您需要的任何变量,然后在需要时读取。首先,在MainActivity中创建全局,该全局将用作首选项文件名:
public static final String PREFS_NAME = "MyPrefsFile";
然后,要保存:
SharedPreferences settings = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("name", name);
editor.commit();
要加载:
SharedPreferences settings = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
String name = settings.getString("name", "John");
保存后,每个活动都可以访问PREF
因此,在您的情况下,按下“确定”按钮时保存名称:
ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
String nameStr = name.getText().toString();
SharedPreferences settings = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("name", nameStr);
editor.commit();
Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
startActivity(intent);
}
});
然后读它:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
t = (TextView)findViewById(R.id.textView3);
Typeface font_b = Typeface.createFromAsset(getAssets(),"fonts/MarkerFelt.ttf");
t.setTypeface(font_b);
SharedPreferences settings = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
String n = settings.getString("name", "defaultName");
t.setText(n);
你可以在你需要的每一项活动中做同样的事情。请参阅文档。使用SharedReferences保存名称或所需的任何变量,然后在需要时读取。首先,在MainActivity中创建全局,该全局将用作首选项文件名:
public static final String PREFS_NAME = "MyPrefsFile";
然后,要保存:
SharedPreferences settings = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("name", name);
editor.commit();
要加载:
SharedPreferences settings = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
String name = settings.getString("name", "John");
保存后,每个活动都可以访问PREF
因此,在您的情况下,按下“确定”按钮时保存名称:
ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
String nameStr = name.getText().toString();
SharedPreferences settings = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("name", nameStr);
editor.commit();
Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
startActivity(intent);
}
});
然后读它:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
t = (TextView)findViewById(R.id.textView3);
Typeface font_b = Typeface.createFromAsset(getAssets(),"fonts/MarkerFelt.ttf");
t.setTypeface(font_b);
SharedPreferences settings = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
String n = settings.getString("name", "defaultName");
t.setText(n);
你可以在你需要的每一项活动中做同样的事情。请参阅文档。创建从应用程序类扩展而来的类。 在该类中实现setter和getter,如
public class GlobalClass extends Application {
//create setters and getters here
public void setUserInfo(String userInfo) {
}
public void getUserInfo() {
return userInfo;
}
}
然后你可以在任何活动中使用它,比如
GlobalClass app = (GlobalClass ) getApplication();
app.getUserInfo();
创建从应用程序类扩展而来的类。 在该类中实现setter和getter,如
public class GlobalClass extends Application {
//create setters and getters here
public void setUserInfo(String userInfo) {
}
public void getUserInfo() {
return userInfo;
}
}
然后你可以在任何活动中使用它,比如
GlobalClass app = (GlobalClass ) getApplication();
app.getUserInfo();
您有许多不同的方法在活动之间共享数据。我想说,您使用哪一种取决于数据的最终来源和目的地
- 传递意图-这是您当前使用的方法。要继续,只需将名称传递给下一个意图李>
- -此方法可将信息保存到应用程序的“首选项”文件中。如果用户正在设置配置文件或其他半固定信息,这将非常有用
- -在这里,您将为用户信息创建一个新的SQLite表,并在其中写入新的行,以显示名称、密码和其他信息。这会带来更多的开销,并且只有在同一个应用程序中有多个用户时才有用
- 保存到单例-在本例中,您创建了一个具有可设置的公共属性的静态类。这对应用程序关闭时丢失所有信息是最不利的,但对于跨多个活动的临时创建和保留可能很有用李>
- 传递意图-这是您当前使用的方法。要继续,只需将名称传递给下一个意图李>
- -此方法可将信息保存到应用程序的“首选项”文件中。如果用户正在设置配置文件或其他半固定信息,这将非常有用
- -在这里,您将为用户信息创建一个新的SQLite表,并在其中写入新的行,以显示名称、密码和其他信息。这会带来更多的开销,并且只有在同一个应用程序中有多个用户时才有用
- 保存到单例-在本例中,您创建了一个具有可设置的公共属性的静态类。这对应用程序关闭时丢失所有信息是最不利的,但对于跨多个活动的临时创建和保留可能很有用李>