I have two activity, and when I press enter on first activity, it will open second activity, it contains a ListView
and when I choose an item from ListView
, it will get its value and bring back to first activity
this is what I've tried;
on second activity
listPerasat.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
NamaPrst = ((TextView) view.findViewById(R.id.txtListNamaPrst)).getText().toString();
Intent i = new Intent();
i.putExtra("NAMA_PERASAT", NamaPrst);
finish();
}
});
}
on first activity
edtText.setText(getIntent().getStringExtra("NAMA_PERASAT")); // inside onCreate
or
public void onActivityResult(int requestCode,int resultCode, Intent data)
{
edtText.setText(getIntent().getStringExtra("NAMA_PERASAT"));
}
but nothing happen. how can I get intent and back to previous activity?
You want to call startActivityForResult()
for this. So in your first Activity
something like
Intent i = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(i, SOME_REQUEST_CODE); // you give SomeRequesSOME_REQUEST_CODE an int value
then in your onItemClick()
you need to call setResult()
and send back the Intent
. This will call onActivityResult()
in your first Activity
listPerasat.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
NamaPrst = ((TextView) view.findViewById(R.id.txtListNamaPrst)).getText().toString();
Intent i = new Intent();
i.putExtra("NAMA_PERASAT", NamaPrst);
setResult(RESULT_OK, i);
finish();
}
});
}
In onActivityResult()
in your first Activity
, don't call getIntent()
. This will try to use the Intent
that originally started your first Activity
. Instead, use the Intent
you passed back
@Override
public void onActivityResult(int requestCode,int resultCode, Intent data)
{
edtText.setText(data.getStringExtra("NAMA_PERASAT"));
}
See this answer for another example
You forgot to start an activity so right before
finish();
i.e.
startActivity(intent);
// or to start with a back result
// startActivityForResult(intent, YOUR_REQUEST_CODE, EXTRA_BUNDLE);
finish();
Refer to this link :
http://developer.android.com/training/basics/intents/result.html
Hope it helps you.
Try this:
Intent resultIntent = new Intent(ctx, ViewMessageDialog.class);
resultIntent.putExtra("NAMA_PERASAT", message);
ctx.startActivity(resultIntent);
call the second activity for result. it will return your selected data on OnAcitiviyResult.
just like below:
link to post
In second activity
edit your code like this
Intent i = new Intent();
i.putExtra("NAMA_PERASAT", NamaPrst);
setResult(RESULT_OK, i);
finish();
then in first activity's
onActivityResult(), first check if the result was "OK" i.e. something was selected.
public void onActivityResult(int requestCode,int resultCode, Intent data)
{
if(resultCode == Activity.RESULT_OK){
edtText.setText(data.getStringExtra("NAMA_PERASAT"));
}
}
If after opening second activity you didn't selected anything and pressed back button
then you will get errors since nothing was passed from second activity
. So first check that if the setResult(RESULT_OK, i);
was executed i.e. extras
were added and we manually set that everything is OK
now.