Java startActivityForResult和替换子活动
我有三个活动,活动A,活动B和活动C 正如今天的代码一样,ActivityA将使用startActivityForResult()启动ActivityB,并从ActivityB接收返回代码。没问题 我还有另一个Android活动ActivityC,它代表了生成ActivityA返回代码的另一种方法 我的问题是: ActivityB是否可以在ActivityC返回ActivityA中的onActivityResult()方法时调用ActivityB创建ActivityC?Java startActivityForResult和替换子活动,java,android,Java,Android,我有三个活动,活动A,活动B和活动C 正如今天的代码一样,ActivityA将使用startActivityForResult()启动ActivityB,并从ActivityB接收返回代码。没问题 我还有另一个Android活动ActivityC,它代表了生成ActivityA返回代码的另一种方法 我的问题是: ActivityB是否可以在ActivityC返回ActivityA中的onActivityResult()方法时调用ActivityB创建ActivityC? 我问这个问题是因为我记得
我问这个问题是因为我记得一年前在某个Android项目中做过这件事,但我记不起是哪一个,谷歌没有给我任何答案。我创建了3个活动。活动A为结果启动了活动B,反过来,活动B只是启动了活动C,并在self上调用finish()。活动C启动后,将结果设置为nad想要的、称为finish on self的任何结果。活动A中的onActivityResult被调用,所以我相信答案是肯定的,它是可以做到的 以下是我的活动示例 活动A:
public class MainTestActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_test);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
Intent in = new Intent(MainTestActivity.this, TestActivityB.class);
startActivityForResult(in, 101);
}
}, 2000);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_test, menu);
return true;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
Toast.makeText(this, "Got Intent", Toast.LENGTH_SHORT).show();
}
}
public class TestActivityB extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_test);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
Intent in = new Intent(TestActivityB.this, TestActivityC.class);
startActivity(in);
finish();
}
}, 2000);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_test, menu);
return true;
}
}
public class TestActivityC extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_test);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
setResult(101);
finish();
}
}, 2000);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_test, menu);
return true;
}
}
活动B:
public class MainTestActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_test);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
Intent in = new Intent(MainTestActivity.this, TestActivityB.class);
startActivityForResult(in, 101);
}
}, 2000);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_test, menu);
return true;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
Toast.makeText(this, "Got Intent", Toast.LENGTH_SHORT).show();
}
}
public class TestActivityB extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_test);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
Intent in = new Intent(TestActivityB.this, TestActivityC.class);
startActivity(in);
finish();
}
}, 2000);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_test, menu);
return true;
}
}
public class TestActivityC extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_test);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
setResult(101);
finish();
}
}, 2000);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_test, menu);
return true;
}
}
活动C:
public class MainTestActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_test);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
Intent in = new Intent(MainTestActivity.this, TestActivityB.class);
startActivityForResult(in, 101);
}
}, 2000);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_test, menu);
return true;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
Toast.makeText(this, "Got Intent", Toast.LENGTH_SHORT).show();
}
}
public class TestActivityB extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_test);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
Intent in = new Intent(TestActivityB.this, TestActivityC.class);
startActivity(in);
finish();
}
}, 2000);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_test, menu);
return true;
}
}
public class TestActivityC extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_test);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
setResult(101);
finish();
}
}, 2000);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_test, menu);
return true;
}
}
我甚至对活动B中的
finish()
进行了注释。当我按下后退按钮销毁活动B时,活动A能够显示祝酒词。这不是我想要做的,但确实有效。回答得很好,谢谢。