我有三个活动,ActivityA,ActivityB和ActivityC。
由于代码是今天,ActivityA将使用startActivityForResult()启动ActivityB,并将从ActivityB接收返回代码。没问题。
我有另一个Android活动ActivityC,它代表了为ActivityA生成返回代码的另一种方法。
我的问题是:
ActivityB是否可以创建ActivityC,以便在ActivityC返回ActivityA中的onActivityResult()方法时调用?
我在问,因为我记得一年前在一些Android项目中这样做,但是我不记得哪一个,谷歌没有给我任何答案。
答案 0 :(得分:1)
我创建了3个活动。活动A为结果启动活动B,反过来活动B只启动活动C并在自己上调用finish()。启动后的活动C,将结果设置为任何想要在自己身上调用完成的n。调用活动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();
}
}
活动B:
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;
}
}
活动C:
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;
}
}