1

2つのアクティビティがあります1>Register.java2> 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);
    }
 }
4

7 に答える 7

1

1つのpojoクラスを作成しますuseextendsApplicationそしてマニフェストファイルにこのコマンドを追加します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()
于 2012-08-01T06:49:52.943 に答える
1

これは、戻るボタンを押すと、「今行ったことを破棄する」と言っているためです。ほとんどの人が望んでいるその振る舞い。私の知る限り、戻るボタンを押したときにその値を取り戻す方法は実際にはありません。ただし、インテントを開始する前にグローバル変数に保存することもできますが、それでも保持されます。そうでない場合は、SharedPreferencesを使用して永続化することができます。また、戻るボタンが押された場合は、取得が完了した後で削除します。

于 2012-08-01T06:01:05.660 に答える
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();

    }
于 2012-08-01T06:04:45.993 に答える
1

データを取得するための多くのオプションがあります。使用する、

  • 共有設定

  • データベース

  • onBackPressed()をオーバーライドする

  • onActivityResult()をオーバーライドします

決定!!Ok

于 2012-08-01T06:21:46.893 に答える
1

SharedPreferencesユーザーがログインしている情報を保存するために使用します。

ユーザーに関するデータをSQLiteデータベースに保存します。

ユーザーがログインしていない場合にのみ登録ページを表示します。

データベースからデータを読み取り、ホームアクティビティのフィールドに入力します。また、ログインしているユーザーのホームアクティビティにチェックを適用します。

于 2012-08-01T06:38:48.740 に答える
0

Home.javaの共有設定を使用して、保存されている値を取得します。

于 2012-08-01T06:10:08.940 に答える
0

この要件にはBundleクラスを使用できます。ただし、別のオプションは、getter/setterメソッドを使用することです。

プロジェクト全体でアクセスできる変数の値を保存および取得するPOJOクラスを作成します。

于 2012-08-01T06:35:23.413 に答える