INTENT TRONG ANDROID NHẬN LẠI DATA SAU KHI PUTEXTRA NHƯ THẾ NÀO?
Tại màn hình main yêu cầu user đăng nhập, nhấn đăng nhập để sang activity 2, tại activity 2 ta điền thông tin đăng nhập và nhấn login để đằng nhập, thông tin đăng nhập đúng thì sẽ chở về activity 1, tại activity 1 mình muốn hiển thị tên đăng nhập của mình. Vậy thì mình phải put cái username ntn, put ở hàm nào, khi nhận username ở activity1 thì nhận ntn và nhận ở hàm nào?
Mã nguồn tại activity1 public class ResultOneActivity extends AppCompatActivity implements View.OnClickListener { public static final int LOGIN_REQUEST_CODE = 1;
TextView textView2;
Button login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result_one);
textView2 = (TextView) findViewById(R.id.textView2);
login = (Button) findViewById(R.id.login);
login.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent = new Intent(this, ResultTwoActivity.class);
startActivityForResult(intent,LOGIN_REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == LOGIN_REQUEST_CODE){
if(resultCode == Activity.RESULT_OK){
Bundle bundle = getIntent().getExtras();//err
String ten = bundle.getString("NAME", "Luu dat");//err
textView2.setText("Dang nhap thanh cong");
}else {
textView2.setText("Đăng nhập thất bại, mời bạn đăng nhập lại lần cuối");
}
}
}
}
Mã nguồn tại activity2 public class ResultTwoActivity extends AppCompatActivity implements View.OnClickListener{
EditText us;
EditText ps;
Button login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result_two);
us = (EditText) findViewById(R.id.username);
ps = (EditText) findViewById(R.id.password);
login = (Button) findViewById(R.id.login);
login.setOnClickListener(this);
}
@Override
public void onClick(View v) {
String userName = us.getText().toString();
String passWord = ps.getText().toString();
Intent intent = new Intent(this, ResultOneActivity.class);
if(userName.equals("dat" )&& passWord.equals("123")){
String name = "xuandat";
intent.putExtra("NAME", userName);
setResult(Activity.RESULT_OK, intent);
}else {
setResult(Activity.RESULT_CANCELED, intent);
}
finish();
}
}
2 CÂU TRẢ LỜI
Trong method lấy data:
Bundle bundle = getIntent().getExtras();//err
--> cái getIntent() này ko đúng nhé bạn vì nó là intent của activity hiện tại
--> thay = cái data trong protected void onActivityResult(int requestCode, int resultCode, Intent data) mới là intent chứa data trả về nhé
thì trong chỗ set Intent bạn phải:
Intent intent = new Intent(); # ko cần phải new Intent(this, ResultOneActivity.class);
Bundle extras = new Bundle();
extras.putString("NAME", userName);
Lúc này lấy dữ liệu cần phải
String value = data.getExtras().getString("NAME");# đây là data cần lấy nhé
Cảm ơn bạn, câu trả lời rất chi tiết
Trong activity1 protected void onActivityResult(int requestCode, int resultCode, Intent data)
dùng
String ten = data.getStringExtra("NAME);
thay vì Bundle bundle = getIntent().getExtras();
nhé
cảm ơn bạn nhé