1

这个问题的解决方案非常简单:

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

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 有效。

4

1 回答 1

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

希望对你有帮助。。

于 2012-04-26T09:19:35.540 回答