Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过任何简单的方法从一个活动中获取值并将值保存到另一个活动?_Java_Android_Android Activity - Fatal编程技术网

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

Java 通过任何简单的方法从一个活动中获取值并将值保存到另一个活动?,java,android,android-activity,Java,Android,Android Activity,我有两项活动 1> Register.java 2> Home.java 在注册活动中,我输入了名字、姓氏、员工id和密码。 当我按下register按钮时,控件被转移到Home.java活动。在这个过程中,我想捕捉名字和姓氏的值,并在家庭活动中显示相同的值。注册活动没有任何历史记录,因为它是注册页, 当我从“注册”按钮导航到“主页”活动时,单击它会显示名称,但当我按下“主页”或“返回”按钮并再次尝试查看应用程序的状态时,它不会显示名称 这是我的密码 Register.java Butt

我有两项活动 1> Register.java 2> Home.java 在注册活动中,我输入了名字、姓氏、员工id和密码。 当我按下register按钮时,控件被转移到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);
    }
 }

这是因为当你按下后退按钮时,你在说“摧毁我刚才所做的”。这是大多数人想要的行为。所以据我所知,当按下后退按钮时,真的没有办法恢复该值。但是,您可以在启动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类。因为它是一种永久的记忆。