我正在开发一个以android 1.6为目标的项目。
所以,我不能使用
@Override public void onBackPressed(){...}
我正在用
开始一项活动startActivityForResult(intent,requestcode)
我不想用
取回一些信息@Override protected void onActivityResult (int requestCode, int resultCode, Intent data)
问题如下:
- '活动A'抛出'活动B'
- 在'ActivityB'按下硬件后退按钮
- '活动A的onActivityResult被调用,但我没有得到任何数据信息(data == null)
我正在尝试在“活动B”中添加一些额外的信息
@Override protected void onPause(){...}
我也调用setResult(RESULT_OK,i);进入这个onPause,但我总是得到RESULT_CANCELED和数据== null在'活动A的onActivityResult
答案 0 :(得分:9)
您可以使用:
代替onBackPressed@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
//set result and finish()
} else {
return super.onKeyDown(keyCode, event);
}
}
答案 1 :(得分:2)
我没有看到你来回传递的常数的值。而且它们很重要。
以下是我调用结果活动的一些工作代码:
------------------------------------- PackVideo 活动 - -------------------------------------
调用ServerSetActivity
Intent serverSetIntent = new Intent();
serverSetIntent.setClass(this, ServerSetActivity.class);
startActivityForResult(serverSetIntent, CHANGE_IP);
常数设置和结果捕获:
(我把它们放在一起,因为只有这里才能捕获两个costants见面)
static public int CHANGE_IP = 1000;
static public int CHANGE_IP_DONE = 1001;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// If the request was for CHANGE_IP and the request was CHANGE_IP
if (resultCode == CHANGE_IP_DONE && requestCode == CHANGE_IP) {
readBaseInfoFromServer(getApplicationContext());
startVideoPlayerService(getApplicationContext());
setCurrentChannelAndPlay(getApplicationContext(), 0);
}
}
----------------------------------- ServerSetActivity ---- ------------------------------------
被叫活动的结束
final Intent intent = new Intent();
setResult(PackVideo.CHANGE_IP_DONE, intent);
finish();
答案 2 :(得分:0)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// check if the request code is same as what is passed here it is 2
if (resultCode != RESULT_OK) {
if (requestCode == 2 && data != null) {
//DO YOUR OVER HERE}