Asked Mar 18th, 2018 1:07 PM 1975 0 2
  • 1975 0 2
0

INTENT TRONG ANDROID NHẬN LẠI DATA SAU KHI PUTEXTRA NHƯ THẾ NÀO?

Share
  • 1975 0 2

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 ANSWERS


Answered Mar 19th, 2018 2:21 AM
Accepted
+3

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é
Share
Avatar Đơngiantớtên Đạt @luuxuandattmydbg
Mar 24th, 2018 2:52 AM

Cảm ơn bạn, câu trả lời rất chi tiết

0
| Reply
Share
Answered Mar 19th, 2018 2:12 AM
+2

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é

Share
Avatar Đơngiantớtên Đạt @luuxuandattmydbg
Mar 24th, 2018 2:52 AM

cảm ơn bạn nhé

0
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.