通过任何简单的方法从一个活动中获取价值并将价值保存到另一个活动?

时间:2012-08-01 05:53:20

标签: java android android-activity

我有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);
    }
 }

7 个答案:

答案 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类,它将保存和检索可在整个项目中访问的变量值。