当按下返回按钮,发送一个值前一活动
问题描述:
大家好,我想这样:当按动操作栏后退按钮时,发送一个前一个活动值。并检查值停留在那里。当按下返回按钮,发送一个值前一活动
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
switch (item.getItemId()) {
case android.R.id.home:
// app icon in action bar clicked; go home
//i'm giving error because i mustnt create new activity i must to send previous activity..
LoginActivity yeni=new LoginActivity();
yeni.setPassword("");
this.finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
当我按下返回键退出应用程序,并去loginscreen但我必须在loginactivity变化值,因为如果我不再次登录相同的价值观登录活动,并开始主要活动......
显然,当我按下后退按钮时,我必须向LoginActivity
中的某个方法发送一个值为null的值。就像这样:
public void setPassword(String comingpass)
{
_passwordText.setText(comingpass);
}
当它知道_passwordtext=null
呆在那里,等待新的登录...
答
// call activity with startActivityForResult
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);
//back press
switch (item.getItemId()) {
case android.R.id.home:
Intent returnIntent = new Intent();
returnIntent.putExtra("flag",1);
setResult(Activity.RESULT_OK,returnIntent);
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
//handle back in main activity
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == Activity.RESULT_OK){
if(data.getIntExtra("flag",0)==1){
yeni.setPassword("");
}
}
if (resultCode == Activity.RESULT_CANCELED) {
//Write your code if there's no result
}
}
}
+0
谢谢,很好的答案,但你可以在这里编辑data.getIntExtra(“标志”)取两个参数的默认值data.getIntExtra(“标志”,0 )可以是正确的。 –
+0
yes right .. edited .. – comeback4you
答
in Activity B:
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.putExtra("MESSAGE", strtext + "");
setResult(2, intent);
super.onBackPressed();
}
in Activity A:
Intent itemintent = new Intent(contextt, ActivityB.class);
Bundle b = new Bundle();
b.putInt("mflag", 0);
itemintent.putExtra("android.intent.extra.INTENT", b);
startActivityForResult(itemintent, 2);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
try {
super.onActivityResult(requestCode, resultCode, data);
String sSuName = data.getStringExtra("MESSAGE");
// txtfavouratecount.setText(sSuName);
} catch (Exception e) {
e.printStackTrace();
}
}
使用startActivityForResult数据传递 – comeback4you