解决这个问题非常简单:
不幸的是,我在我的代码中以某种方式评论了这个错误,也许我从某个地方复制了它:
public void onUserLeaveHint() { // this only executes when Home is selected.
if(started){
started=false;
recordTask.cancel(true);
}
this.finish();
super.onUserLeaveHint();
}
}
}
来自API:
当活动即将作为用户选择的结果进入后台时,被称为活动生命周期的一部分。
因此,无论何时开始新活动,主要都会在后台进行并完成。
感谢所有人的帮助。我的愚蠢错误,简直忘记了那种方法。 问题解决了。
原始问题:
我将第二个活动的代码缩减为现在仅返回结果,它看起来像这样。 (当我取消注释整个代码时,第二个活动有效。它只是一个文件浏览器,它应该返回String路径。对于调试我使用它直到我可以让它工作。) 这两个活动都在清单中声明。
public class AndroidExplorer extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.olddata);
Intent sender=getIntent();
Intent intent=new Intent();
intent.putExtra("ComingFrom", "Hello");
setResult(Activity.RESULT_OK, intent);
AndroidExplorer.this.finish();
}
}
这是从第一个活动调用的:
Intent intent;
intent = new Intent(firstactivity.this,AndroidExplorer.class);
firstactivity.this.startActivityForResult(intent,0);
结果应该通过以下方式收到:
@Override
public void onActivityResult(int requestCode,int resultCode,Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
String extraData=data.getStringExtra("ComingFrom");
Log.e("result", extraData);
go2startscreen();
}
不幸的是,它不会返回第一个活动,只是关闭应用程序。
错误日志:
04-26 11:11:14.096: D/memalloc(32383): /dev/pmem: Mapped buffer base:0x51b3e000 size:17645568 offset:15556608 fd:53
04-26 11:11:32.264: D/memalloc(32383): /dev/pmem: Mapped buffer base:0x52e66000 size:3686400 offset:1597440 fd:59
04-26 11:11:32.584: D/memalloc(32383): /dev/pmem: Unmapping buffer base:0x51b3e000 size:17645568 offset:15556608
04-26 11:11:32.584: D/memalloc(32383): /dev/pmem: Unmapping buffer base:0x52e66000 size:3686400 offset:1597440
04-26 11:11:32.644: W/IInputConnectionWrapper(32383): showStatusIcon on inactive InputConnection
04-26 11:11:32.644: W/IInputConnectionWrapper(32383): InputConnection = android.view.inputmethod.BaseInputConnection@40d9ddd0, active client = false
这是go2startscreen函数:
void go2startscreen(){
setContentView(R.layout.startscreen);
appPosition = "startscreen";
newRecord = (Button) this.findViewById(R.id.newRecord);
newRecord.setOnClickListener(this);
}
所以它应该在R.layout.startscreen结束。当我从第一个活动中调用它时,调用go2startscreen可以正常工作。
答案 0 :(得分:1)
检查resultCode是否正常然后按照你想要的那样做 - 就像这样::
@Override
public void onActivityResult(int requestCode,int resultCode,Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==RESULT_OK){
String extraData=data.getStringExtra("ComingFrom");
Log.e("result", extraData);
go2startscreen();
}
}
希望它会帮助你..