1

我有 2 个活动 1>Register.java 2>Home.java 在 Register 活动中,我输入了名字、姓氏、员工 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);
                }
            }
        }
    });

主页.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);
    }
 }
4

7 回答 7

1

您可以在 Home Activity 上尝试使用以下代码

@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();

    }
于 2012-08-01T06:04:45.993 回答
1

这是因为当您按下后退按钮时,您是在说“破坏我刚刚所做的”。它是大多数人想要的行为。据我所知,当按下后退按钮时,确实没有办法恢复该值。但是,您可以在启动 Intent 之前将其保存在全局变量中,并且应该仍然保留它。如果不是,您可以使用 SharedPreferences 以使其保持不变,然后在您完成检索后删除它(如果按下后退按钮)。

于 2012-08-01T06:01:05.660 回答
1

您有很多选择来检索数据。利用,

  • 共享偏好

  • 数据库

  • 覆盖 onBackPressed()

  • 覆盖 onActivityResult()

决定!!好的

于 2012-08-01T06:21:46.893 回答
1

用于SharedPreferences存储用户登录的信息。

将有关用户的数据保存在 SQLite 数据库中。

仅当用户未登录时才显示注册页面。

从数据库中读取数据并填写 Home 活动中的字段。还要在登录用户的主页活动中应用检查。

于 2012-08-01T06:38:48.740 回答
1

创建一个 pojo 类使用扩展应用程序并在清单文件中添加此命令 android:name="class name" 现在您可以在任何应用程序中使用该对象

示例清单

<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()
于 2012-08-01T06:49:52.943 回答
0

使用 Home.java 中的共享偏好来检索存储的值..

于 2012-08-01T06:10:08.940 回答
0

您可以使用 Bundle 类来满足此要求。然而,还有另一种选择是使用 getter/setter 方法。

创建一个 POJO 类,该类将保存和检索可以在整个项目中访问的变量值。

于 2012-08-01T06:35:23.413 回答