Java 通过任何简单的方法从一个活动中获取值并将值保存到另一个活动?
我有两项活动 1> Register.java 2> Home.java 在注册活动中,我输入了名字、姓氏、员工id和密码。 当我按下register按钮时,控件被转移到Home.java活动。在这个过程中,我想捕捉名字和姓氏的值,并在家庭活动中显示相同的值。注册活动没有任何历史记录,因为它是注册页, 当我从“注册”按钮导航到“主页”活动时,单击它会显示名称,但当我按下“主页”或“返回”按钮并再次尝试查看应用程序的状态时,它不会显示名称 这是我的密码 Register.javaJava 通过任何简单的方法从一个活动中获取值并将值保存到另一个活动?,java,android,android-activity,Java,Android,Android Activity,我有两项活动 1> Register.java 2> Home.java 在注册活动中,我输入了名字、姓氏、员工id和密码。 当我按下register按钮时,控件被转移到Home.java活动。在这个过程中,我想捕捉名字和姓氏的值,并在家庭活动中显示相同的值。注册活动没有任何历史记录,因为它是注册页, 当我从“注册”按钮导航到“主页”活动时,单击它会显示名称,但当我按下“主页”或“返回”按钮并再次尝试查看应用程序的状态时,它不会显示名称 这是我的密码 Register.java Butt
Button b = (Button) findViewById(R.id.btnRegister);
b.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
EditText username = (EditText) findViewById(R.id.reg_employeeid);
EditText password = (EditText) findViewById(R.id.reg_password);
String welcm ="Welcome";
String space = " ";
EditText firstname = (EditText)findViewById(R.id.reg_firstname);
EditText lastname = (EditText)findViewById(R.id.reg_lastname);
String getfirstname = firstname.getText().toString();
String getlasttname = lastname.getText().toString();
String welcome=welcm.concat(space).concat(getfirstname).concat(space).concat(getlasttname);
if(username.getText().toString().length() > 0 && password.getText().toString().length() > 0 ) {
if(username.getText().toString().equals("test") && password.getText().toString().equals("test")) {
SharedPreferences settings = `enter getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("logged", "logged");
editor.commit();
Intent intent = new Intent(Register.this, SecureXActivity.class);
intent.putExtra("name", welcome);
startActivity(intent);
}
}
}
});
Home.java
public void onCreate(Bundle savedInstanceState)
{
Thread.setDefaultUncaughtExceptionHandler(new exceptionHandler(this));
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Bundle extras =getIntent().getExtras();
if (extras != null)
{
String value = extras.getString("name");
TextView txtwelcm= (TextView)findViewById(R.id.textViewwelcm);
txtwelcm.setText(value);
}
}
这是因为当你按下后退按钮时,你在说“摧毁我刚才所做的”。这是大多数人想要的行为。所以据我所知,当按下后退按钮时,真的没有办法恢复该值。但是,您可以在启动Intent之前将其保存在全局变量中,并且该变量仍应保持不变。如果没有,您可以使用SharedReferences使其持久化,然后在按“后退”按钮检索完后将其删除。这是因为当您按“后退”按钮时,您说的是“销毁我刚才所做的”。这是大多数人想要的行为。所以据我所知,当按下后退按钮时,真的没有办法恢复该值。但是,您可以在启动Intent之前将其保存在全局变量中,并且该变量仍应保持不变。如果没有,您可以使用SharedReferences使其持久化,然后在按“上一步”按钮检索完后将其删除。您可以在家庭活动中尝试使用以下代码。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
String name = data.getStringExtra("name");
Toast.makeText(getApplicationContext(), name +"", Toast.LENGTH_SHORT).show();
}
您可以在家庭活动中尝试以下代码
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
String name = data.getStringExtra("name");
Toast.makeText(getApplicationContext(), name +"", Toast.LENGTH_SHORT).show();
}
使用Home.java中的共享优先权检索存储值。使用Home.java中的共享优先权检索存储值。您有许多检索数据的选项。 使用
- 共享优先级
- 数据库
- 重写onBackPressed()
- 重写onActivityResult()
决定!!好的您有很多选择来检索数据。 使用
- 共享优先级
- 数据库
- 重写onBackPressed()
- 重写onActivityResult()
决定!!好的您可以使用Bundle类来满足此需求。然而,还有另一种选择是使用getter/setter方法
创建一个POJO类,该类将保存和检索可在整个项目中访问的变量值。您可以使用Bundle类满足此要求。然而,还有另一种选择是使用getter/setter方法
创建一个POJO类,该类将保存和检索可在整个项目中访问的变量值。使用
SharedReferences
存储用户登录的信息
将有关用户的数据保存在SQLite数据库中
仅当用户未登录时显示注册页面
从数据库读取数据并填写“主页”活动中的字段。还应在登录用户的主页活动中进行检查。使用
SharedReferences
存储用户登录的信息
将有关用户的数据保存在SQLite数据库中
仅当用户未登录时显示注册页面
从数据库读取数据并填写“主页”活动中的字段。还应在登录用户的主活动中应用检查。创建一个pojo类使用扩展应用程序并在清单文件中添加此命令 android:name=“类名” 现在,您可以在应用程序的任何位置使用该对象 示例mnifest
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package=""
android:versionCode="1"
android:versionName="1.0" >
<application
android:name="BaseApplication"
android:icon="@drawable/application_icon"
android:label="@string/app_name"
android:theme="@style/Theme.D1"
>
<activity
android:name=".activity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
活动示例:
BaseApplication mApplication = (BaseApplication) getApplication();
mApplication.setdata("value");
String data=mAplication.getdata()
使用扩展应用程序创建一个pojo类,并在清单文件中添加此命令 android:name=“类名” 现在,您可以在应用程序的任何位置使用该对象 示例mnifest
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package=""
android:versionCode="1"
android:versionName="1.0" >
<application
android:name="BaseApplication"
android:icon="@drawable/application_icon"
android:label="@string/app_name"
android:theme="@style/Theme.D1"
>
<activity
android:name=".activity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
活动示例:
BaseApplication mApplication = (BaseApplication) getApplication();
mApplication.setdata("value");
String data=mAplication.getdata()
看,我会这么说,但我不确定按下后退按钮时,
onActivityResult()
是否会运行。从技术上讲,从未调用过finish()
,这意味着也不会调用,但我肯定是错的。请看,我可能会这么说,但我不确定按下后退按钮时,onActivityResult()
是否会运行。从技术上讲,finish()
从未被调用,这意味着也不会被调用,但我肯定是错的。我不会为此使用SharedReference类。因为它是一种永久性的内存。我不会为此使用SharedReference类。因为它是一种永久的记忆。