Android:从第二个活动切换回第一个活动同时退出

时间:2012-04-26 09:04:38

标签: android android-activity

解决这个问题非常简单:

不幸的是,我在我的代码中以某种方式评论了这个错误,也许我从某个地方复制了它:

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可以正常工作。

1 个答案:

答案 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();
    }
  }

希望它会帮助你..