我有两个Activity-a和Activity-B,我使用Intent将Value从Act-a传递到ActB。一切都很好。当我打开我的Act-B时,我从Act-A中获得值,现在的问题是,当点击后退按钮(两次)时,只有我获得Act-A。当我按下一次相同的活动时,它没有在我的Act-A。
Act-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);
}
动作B:
receive = (TextView)findViewById(R.id.userHidden);
receive.setText(getIntent().getStringExtra("name"));
所以我认为你必须能够玩ANDROID INTENTS。这可能是一个与你相似的问题。我希望这对你有帮助,如果没有,请随时回复
您的问题在于以下代码片段:
// Launching Add_City Screen
Intent i = new Intent(getApplicationContext(), Acti-B.class);
startActivity(i);
passmyValue();
您启动Activity-B两次,第一次没有任何额外功能,第二次在passmyValue()
内。
我认为,由于您的Activit-B使用默认启动模式,因此您有两个ActivityB实例。因此,您的后堆栈将看起来像:Activity-A->Activity-B->Activity-B。因此,您需要按两次返回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();
}
删除第一个意图,因为您要启动两次"活动"。这反过来意味着你的"活动B"在没有额外意图的情况下启动一次,再加上它。按下后退键关闭第一个实例,再次关闭第二个实例。只需删除行并启动B活动,如下所示:
@Override
public void onClick(View view) {
passmyValue();
}
在onClick()中,您正在通过启动活动-B
Intent i = new Intent(getApplicationContext(),
Acti-B.class);
startActivity(i);
并且您再次在PassMyValue方法中调用startActivity(intent)
,其中intent与i相同。因此,您启动了Activity-B两次。你需要通过删除来修复它
Intent i = new Intent(getApplicationContext(),
Acti-B.class);
startActivity(i);
您只需新建两个意图并启动两个活动,即Activity-B和Activity-B。实际上,在任务堆栈中有三个活动,它们是Act-A、Act-B和Act-B。
同一项活动不需要开始两次。试试下面的代码,我认为它有帮助。
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);
}