我有一个方法。通过使用此方法,我将启动一个ListActivity。这是我的源代码。
private void onCollectionClicked() {
Intent i = new Intent(getBaseContext(), FileDialog.class);
i.putExtra(FileDialog.START_PATH, last_folder);
startActivityForResult(i, PICK_FILE_CODE);
}
在启动的ListActivity中,我有取消按钮。如果我单击此按钮,它应该返回到MainActivity。这是我的源代码
cancelButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
setResult(RESULT_CANCELED);
finish();
}
});
我的问题是ListActivity被杀了,但它没有回到MainActivity。我该如何解决这个问题?
答案 0 :(得分:1)
以下示例代码演示了如何使用startActivityForResult()方法触发和意图。
public void onClick(View view) {
Intent i = new Intent(this, ActivityTwo.class);
i.putExtra("Value1", "This value one for ActivityTwo ");
i.putExtra("Value2", "This value two ActivityTwo");
// Set the request code to any code you like, you can identify the
// callback via this code
startActivityForResult(i, REQUEST_CODE);
}
如果使用startActivityForResult()方法,则启动的活动称为子活动。
如果子活动完成,它可以通过Intent将数据发送回其调用者。这是在finish()方法
中完成的@Override
public void finish() {
// Prepare data intent
Intent data = new Intent();
data.putExtra("returnKey1", "Swinging on a star. ");
data.putExtra("returnKey2", "You could be better then you are. ");
// Activity finished ok, return the data
setResult(RESULT_OK, data);
super.finish();
}
子活动完成后,将调用调用活动中的onActivityResult()方法。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
if (data.hasExtra("returnKey1")) {
Toast.makeText(this, data.getExtras().getString("returnKey1"),
Toast.LENGTH_SHORT).show();
}
}
}
答案 1 :(得分:0)
抱歉..这个问题不对。实际上我在不知不觉中杀了我的MainActivity。这是我的onPause代码。
@Override
public void onPause() {
super.onPause();
//safe close..
android.os.Process.killProcess(android.os.Process.myPid());
}
谢谢@Pankaj kumar。由于你的评论,我已经检查了我的onPause方法代码。