0

I'm french so sorry for my bad english.

I need to update on my second activity my TextView with a EditText of my first Activity. But I don't how to do.

That is my code on First Activity:

public class MainActivity extends AppCompatActivity {

private TextView mGreetingTextView;
private EditText mLoginEditText,mEmailEditText,mPasswordEditText;
private Button mLoginButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mGreetingTextView = findViewById(R.id.main_textview_info);
    mLoginEditText = findViewById(R.id.main_edittext_login);
    mEmailEditText = findViewById(R.id.main_edittext_email);
    mPasswordEditText = findViewById(R.id.main_edittext_password);
    mLoginButton = findViewById(R.id.main_button_log);

    mLoginButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            validateLogin();
        }
        String login = mLoginEditText.getText().toString();
    });
}
private void validateLogin(){
    if (mEmailEditText.getText().toString().equals("admin@admin.com") &&
            mPasswordEditText.getText().toString().equals("admin")) {
        Toast.makeText(getApplicationContext(), "Login successful",Toast.LENGTH_SHORT).show();
        callHome();
    } else {
        Toast.makeText(getApplicationContext(), "Wrong login",Toast.LENGTH_SHORT).show();
    }
}
public void callHome(){
    Intent i = new Intent(getApplicationContext(),HomeActivity.class);
    i.putExtra("mLoginText", mLoginEditText.getText());
    startActivity(i);
}

But I search a same topic who has the same problem and I don't find. Apologize for my bad level on Android but I'm student on Android. This is my first topic on StackOverFlow ^^

Ariakah
  • 31
  • 6
  • 5
    Does this answer your question? [How do I pass data between Activities in Android application?](https://stackoverflow.com/questions/2091465/how-do-i-pass-data-between-activities-in-android-application) – a_local_nobody Nov 22 '21 at 11:12
  • Also `String login = mLoginEditText.getText().toString();` is useless here, you do not use this variable anywhere :) – Martin Marconcini Nov 22 '21 at 11:47
  • pass EditText data from First Activity to Second activity via an Intent. And set this data to the textview in SecondActivity by getting it from intent. – Bhargav Thanki Nov 22 '21 at 11:52

3 Answers3

0

You are calling mLoginEditText.getText() and that returns Editable. You will need to call mLoginEditText.getText().toString() and that will be a String.

Uriel Frankel
  • 14,304
  • 8
  • 47
  • 69
0

You can update your second activity (HomeActivity) like this

public class HomeActivity extends AppCompatActivity {

TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    textView = findViewById(R.id.textView);

    // get the text from main activity
    Intent intent = getIntent();
    String text = intent.getStringExtra("mLoginText");
    textView.setText(text);
}}
Mohammad Arman
  • 508
  • 4
  • 13
  • You need to add .toString() also in your MainActivity when you are passing value like this i.putExtra("mLoginText", mLoginEditText.getText().toString()); – Mohammad Arman Nov 22 '21 at 12:02
0

I found a result :)

MainActivity:

public class MainActivity extends Activity {

    public final static String LOGIN_DATA = "mLoginText";
    private EditText mLoginEditText,mEmailEditText,mPasswordEditText;
    private Button mLoginButton;
    private boolean isValid;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mLoginEditText = findViewById(R.id.main_edittext_login);
        mEmailEditText = findViewById(R.id.main_edittext_email);
        mPasswordEditText = findViewById(R.id.main_edittext_password);
        mLoginButton = findViewById(R.id.main_button_log);

        mLoginButton.setOnClickListener(v -> {
            isValid = validateLogin();
            if (isValid){
                callHome();
            }
        });
    }
    private boolean validateLogin(){
        if (mEmailEditText.getText().toString().equals("admin@admin.com") &&
                mPasswordEditText.getText().toString().equals("admin")) {
            Toast.makeText(getApplicationContext(), "Login successful",Toast.LENGTH_SHORT).show();
            return true;
        } else {
            Toast.makeText(getApplicationContext(), "Wrong login",Toast.LENGTH_SHORT).show();
            return false;
        }
    }
    public void callHome(){
        Intent i = new Intent(MainActivity.this,HomeActivity.class);
        i.putExtra(LOGIN_DATA, mLoginEditText.getText().toString());
        startActivity(i);
    }
}

HomeActvity:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

    mHelloText = findViewById(R.id.home_textview_hello);

    Intent intent = getIntent();
    String login = intent.getStringExtra(MainActivity.LOGIN_DATA);
    mHelloText.setText(login);

With that, the login name of the first activity is in the second activity :)

Squti
  • 4,171
  • 3
  • 10
  • 21
Ariakah
  • 31
  • 6