java - 如果没有单击按钮,则不会传递 EditText 数据

标签 java android android-edittext

我正在构建一个应用程序,您可以将图像上传到我公司的服务器

我的问题是我有一个包含电子邮件、密码和客户端 ID 的登录屏幕(在 LoginActivity 中)

现在您输入的数据将传递到另一个 Activity(CameraActivity),并用于使用 Uri.Builder 构建 URL。 数据保存在编辑文本框中,但仅在单击按钮时传递(使用 Intent )到其他 Activity ,因此,您必须返回登录屏幕并单击按钮以在每次上传和每次启动应用程序时重新提交数据(数据存储在文本框中,但如果没有单击按钮,则不会传递到其他 Activity ),以便 URI.Builder 工作并将输入的信息提供给 URL。

我希望客户端输入该信息一次并单击按钮一次,然后每次都会存储和使用该信息,无论应用程序是否退出等。

登录 Activity ,此 Activity 具有编辑文本框,输入的信息将被保存,但如果没有单击按钮,则不会传递到其他 Activity

  public class LoginActivity extends AppCompatActivity {
String ID = "id";
String EMAIL = "email";
String PASS = "pass";
private SharedPreferences mPreference;
EditText email, password, id;

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

    email=findViewById(R.id.emailtext);
    password=findViewById(R.id.pwdtext);
    id=findViewById(R.id.clientid);
    Button loginBtn=findViewById(R.id.button);

    mPreference = PreferenceManager.getDefaultSharedPreferences(this);

    id.setText(mPreference.getString(ID, ""));
    email.setText(mPreference.getString(EMAIL, ""));
    password.setText(mPreference.getString(PASS, ""));

    loginBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           EMAIL =email.getText().toString();
         PASS =password.getText().toString();
          ID =id.getText().toString();

            mPreference.edit().putString(ID,ID).apply();
            mPreference.edit().putString(EMAIL, EMAIL).apply();
            mPreference.edit().putString(PASS, PASS).apply();

            Intent intent=new Intent(LoginActivity.this,
                    CameraActivity.class);
            intent.putExtra("clientId", ID);
            intent.putExtra("email", EMAIL);
            intent.putExtra("password", PASS);
            startActivity(intent);
            }
        });
    }
}

最佳答案

正如问题评论中所建议的,SharedPreferences 是一个不错的选择。

SharedPreferences getPreferences(Context context) {
    return PreferenceManager.getDefaultSharedPreferences(context);
}

void setEmail(Context context, String email) {
    SharedPreferences.Editor editor = getPreferences(context).edit();
    editor.putString("EMAIL", email);
    editor.apply();
}

String getEmail(Context context) {
    return getPreferences(context).getString("EMAIL", "");
}

上面是如何从共享首选项中放置内容和检索内容的示例。由于您要存储的不仅仅是一封电子邮件(用户 ID 等),您甚至可以将一个对象存储为 gson,这样您只需调用一个函数。但当然这是你的决定。

关于java - 如果没有单击按钮,则不会传递 EditText 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57495668/

相关文章:

android - 从 sqlite 数据库中删除项目不起作用 - 所有项目都被删除

android - 如何在android中搜索twitter.com/search并解析数据

android - 通过 Intent 将编辑文本的文本移动到另一个 Activity 会引发异常

java - EditText 必须至少有 10 个字符?

java - 我的圆周率计算器有什么问题?

java - 我对某些用户输入的错误检查方法不起作用

java - JGraphT - 将 BFS 应用于 WeightedGraph

android - 超出 Firebase 实时数据库限制

Android EditText 焦点

java - 如何编辑程序以便将变量分配给数组列表