Android 从用户获取数据并将数据传递给多个活动

Android Get the data from User And pass the data to multiple activities

我有 android 应用程序用于登录,当用户提供登录详细信息时,数据必须在多个活动中传递。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    username=(EditText)findViewById(R.id.user_name);
    passwrd=(EditText)findViewById(R.id.Pass_word);
    login=(Button)findViewById(R.id.Login);
    login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String email = username.getText().toString();
            String password = passwrd.getText().toString();
            new Mytask().execute(email, password);
        }
    });

}

我想将电子邮件和密码传递给多个活动..

我刚试过 Bundle。
我将电子邮件值存储为 "name"。 我只是将值传递给另一个 activity(代码下方)。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_testpage);

    Entertext = (EditText) findViewById(R.id.tex_id);
    Submit = (Button) findViewById(R.id.sub_mit);
    Submit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String Text = Entertext.getText().toString();
            Intent i = getIntent();
            Bundle b = i.getBundleExtra("personBdl");
            String name = b.getString("name");

            new Mytask().execute(name,Text);
        }
    });

private class Mytask extends AsyncTask<String, Integer, String> {

    @Override
    protected String doInBackground(String... params) {
        StringBuilder dta = null;
        try {
            URL url = new URL("http://xxxyyy.com/insert.php?user=" + params[0] + "&value=" + params[1]);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestMethod("POST");
            int statusCode = urlConnection.getResponseCode();
            if (statusCode == 200) {
                InputStream it = new BufferedInputStream(urlConnection.getInputStream());
                InputStreamReader read = new InputStreamReader(it);
                BufferedReader buff = new BufferedReader(read);
                dta = new StringBuilder();
                String chunks;
                while ((chunks = buff.readLine()) != null) {
                    dta.append(chunks);
                }
            } else {
                //Handle else
            }
            return dta.toString();
        } catch (ProtocolException e) {
            e.printStackTrace();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }

电子邮件已通过 "name"(捆绑包)。 "name" 值作为参数 [0] 传递到我的 php 文件。 但是 params[0] 没有传递到我的 php 文件。

你能帮我解决这个问题吗?谢谢。

您可能应该使用 SharedPreferences 而不是 Bundle。

这样保存数据:

SharedPreferences sPref;
sPref = getPreferences(MODE_PRIVATE);
    Editor ed = sPref.edit();
    ed.putString("email", etText.getText().toString());
    ed.putString("password", etText.getText().toString());
    ed.commit();

并像这样在你的活动中得到它:

sPref = getPreferences(MODE_PRIVATE);
    String email = sPref.getString("email", "");
    String password = sPref.getString("password", "");
    etText.setText(savedText);

我也建议你在单独的线程中使用它。