我有2项活动 1 GT; Register.java 2 - ; Home.java 在注册活动中,我输入了名字,姓氏,员工ID和密码。 当我按下注册按钮时,控件将转移到Home.java活动。在这个过程中,我想要抓住名字和姓氏的价值,并在家庭活动中显示相同的名称。注册活动没有任何历史记录,因为它是一个注册页面, 当我从按钮点击登记到主页活动按钮时,它会显示名称,但是当我按下主页或后退按钮并再次尝试查看应用程序的状态时,它不会显示名称。
这是我的代码 Register.java
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);
}
}
答案 0 :(得分:1)
这是因为当你按下后退按钮时,你会说“毁掉我刚刚做的”。它是大多数人想要的行为。据我所知,当按下后退按钮时,确实没有办法获得该值。但是,您可以在启动Intent之前将其保存在全局变量中,并且仍应保留它。如果不是,您可以使用SharedPreferences使其保持不变,然后在完成检索后删除它,如果按下后退按钮。
答案 1 :(得分:1)
您可以在家庭活动
上尝试使用以下代码@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();
}
答案 2 :(得分:1)
您有许多选项可以检索数据。 使用,
共享首页
数据库
覆盖onBackPressed()
覆盖onActivityResult()
确定!!确定
答案 3 :(得分:1)
使用SharedPreferences
存储用户登录的信息。
将有关用户的数据保存在SQLite数据库中。
仅在用户未登录时显示注册页面。
从数据库中读取数据并填写Home活动中的字段。同时在登录用户的主页活动中应用支票。
答案 4 :(得分:1)
创建一个pojo类使用extends Application并在manifest文件中添加此命令 android:name =“class 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>
pojo类示例:
public class BaseApplication extends Application{
public static String data;
public static String getdata() {
return frmDate;
}
public static void setdata(String data) {
BaseApplication.data = data;
}
}
活动示例:
BaseApplication mApplication = (BaseApplication) getApplication();
mApplication.setdata("value");
String data=mAplication.getdata()
答案 5 :(得分:0)
在Home.java中使用共享优先级来检索存储的值..
答案 6 :(得分:0)
您可以将Bundle类用于此要求。但是另一种选择是使用getter / setter方法。
创建一个POJO类,它将保存和检索可在整个项目中访问的变量值。