为什么我的后退按钮不能正常工作
Why My Back Button not working Properly
我有两个活动 Activity-A 和 Activity-B,我使用 Intent 将值从 Act-A 传递到 Act B。一切都很好。当我打开我的 Act-B 时,我从 Act-A 中获得价值,现在问题是当单击“后退”按钮(两次)时,只有我得到我的 Act-A。当我按一次相同的 activity 它没有在我的导航上导航我
Act-A.
A 幕:
btn_add_city.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Launching Add_City Screen
Intent i = new Intent(getApplicationContext(),
Acti-B.class);
startActivity(i);
passmyValue();
}
});
public void passmyValue(){
intent = new Intent(getApplicationContext(),Act-B.class);
intent.putExtra("name", receive.getText().toString());
startActivity(intent);
}
Act-B:
receive = (TextView)findViewById(R.id.userHidden);
receive.setText(getIntent().getStringExtra("name"));
您的问题出在这段代码中:
// Launching Add_City Screen
Intent i = new Intent(getApplicationContext(), Acti-B.class);
startActivity(i);
passmyValue();
你开始 Activity-B 两次,第一次没有任何额外内容,第二次在 passmyValue()
.
我认为,由于您的 Activit-B 使用默认启动模式,因此您有 2 个 Activity-B 实例。所以你的返回堆栈看起来像:Activity-A -> Activity-B -> Activity-B。因此,您需要按两次返回 return 到 Activity-A。
只需删除这些行:
Intent i = new Intent(getApplicationContext(), Acti-B.class);
startActivity(i);
在这段代码中:
@Override
public void onClick(View view) {
// Launching Add_City Screen
Intent i = new Intent(getApplicationContext(),
Acti-B.class);
startActivity(i);
passmyValue();
}
删除第一个意图,因为您要启动 Activity 两次。这反过来意味着你的 Activity B 在没有额外意图的情况下启动一次,并且最重要的是它。按回关闭第一个,再次关闭第二个实例。只需删除这些行并像这样启动 B activity:
@Override
public void onClick(View view) {
passmyValue();
}
所以我想你一定会玩ANDROID INTENTS. And this might be the Similar Question to you。我希望它能帮助你如果没有请随时回复。 :) :)
您刚刚新建了两个意图并启动了两个活动,即 Activity-B 和 Activity-B。实际上,您在任务堆栈中有三个活动,它们是 Act-A、Act-B、Act-B。
不需要两次启动相同的activity。试试下面的代码,我认为它有帮助。
btn_add_city.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Launching Add_City Screen
// It's no need to start the same activity for twice
passmyValue();
}
});
public void passmyValue(){
intent = new Intent(getApplicationContext(),Act-B.class);
intent.putExtra("name", receive.getText().toString());
startActivity(intent);
}
在 onClick() 中,您开始 activity-B by
Intent i = new Intent(getApplicationContext(),
Acti-B.class);
startActivity(i);
并且您再次在 PassMyValue 方法中调用 startActivity(intent)
,其中 intent 与 i。所以你开始 Activity-B 2 次。
您需要通过删除
来修复它
Intent i = new Intent(getApplicationContext(),
Acti-B.class);
startActivity(i);
我有两个活动 Activity-A 和 Activity-B,我使用 Intent 将值从 Act-A 传递到 Act B。一切都很好。当我打开我的 Act-B 时,我从 Act-A 中获得价值,现在问题是当单击“后退”按钮(两次)时,只有我得到我的 Act-A。当我按一次相同的 activity 它没有在我的导航上导航我 Act-A.
A 幕:
btn_add_city.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Launching Add_City Screen
Intent i = new Intent(getApplicationContext(),
Acti-B.class);
startActivity(i);
passmyValue();
}
});
public void passmyValue(){
intent = new Intent(getApplicationContext(),Act-B.class);
intent.putExtra("name", receive.getText().toString());
startActivity(intent);
}
Act-B:
receive = (TextView)findViewById(R.id.userHidden);
receive.setText(getIntent().getStringExtra("name"));
您的问题出在这段代码中:
// Launching Add_City Screen
Intent i = new Intent(getApplicationContext(), Acti-B.class);
startActivity(i);
passmyValue();
你开始 Activity-B 两次,第一次没有任何额外内容,第二次在 passmyValue()
.
我认为,由于您的 Activit-B 使用默认启动模式,因此您有 2 个 Activity-B 实例。所以你的返回堆栈看起来像:Activity-A -> Activity-B -> Activity-B。因此,您需要按两次返回 return 到 Activity-A。
只需删除这些行:
Intent i = new Intent(getApplicationContext(), Acti-B.class);
startActivity(i);
在这段代码中:
@Override
public void onClick(View view) {
// Launching Add_City Screen
Intent i = new Intent(getApplicationContext(),
Acti-B.class);
startActivity(i);
passmyValue();
}
删除第一个意图,因为您要启动 Activity 两次。这反过来意味着你的 Activity B 在没有额外意图的情况下启动一次,并且最重要的是它。按回关闭第一个,再次关闭第二个实例。只需删除这些行并像这样启动 B activity:
@Override
public void onClick(View view) {
passmyValue();
}
所以我想你一定会玩ANDROID INTENTS. And this might be the Similar Question to you。我希望它能帮助你如果没有请随时回复。 :) :)
您刚刚新建了两个意图并启动了两个活动,即 Activity-B 和 Activity-B。实际上,您在任务堆栈中有三个活动,它们是 Act-A、Act-B、Act-B。
不需要两次启动相同的activity。试试下面的代码,我认为它有帮助。
btn_add_city.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Launching Add_City Screen
// It's no need to start the same activity for twice
passmyValue();
}
});
public void passmyValue(){
intent = new Intent(getApplicationContext(),Act-B.class);
intent.putExtra("name", receive.getText().toString());
startActivity(intent);
}
在 onClick() 中,您开始 activity-B by
Intent i = new Intent(getApplicationContext(),
Acti-B.class);
startActivity(i);
并且您再次在 PassMyValue 方法中调用 startActivity(intent)
,其中 intent 与 i。所以你开始 Activity-B 2 次。
您需要通过删除
Intent i = new Intent(getApplicationContext(),
Acti-B.class);
startActivity(i);