这个问题的解决方案非常简单:
不幸的是,我在我的代码中以某种方式评论了这个错误,也许我从某个地方复制了它:
public void onUserLeaveHint() { // this only executes when Home is selected.
if(started){
started=false;
recordTask.cancel(true);
}
this.finish();
super.onUserLeaveHint();
}
}
}
那来自API:
当活动由于用户选择而即将进入后台时,作为活动生命周期的一部分调用。
所以每当一个新的活动开始时,主要的活动就会进入后台并完成。
无论如何感谢大家的帮助。我的愚蠢错误,完全忘记了那个方法。问题解决了。
原始问题:
我减少了第二个活动的代码,现在只返回一个结果,它看起来像这样。(当我取消注释整个代码时,第二个活动起作用。它只是一个文件资源管理器,应该返回字符串路径。为了调试,我使用它直到我可以让它工作。)这两个活动都在清单中声明。
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 有效。