gpt4 book ai didi

java - 我是否需要包含默认 Intent 才能返回到上一个 Activity?

转载 作者:行者123 更新时间:2023-11-30 03:05:46 26 4
gpt4 key购买 nike

我正在开发一个待办事项列表 Android 应用程序(它碰巧是为了类作业,但这不是我要问的问题——我已经尽可能多地省略了代码)。主屏幕显示 ToDo 项目列表,底部有一个按钮可打开“添加新 ToDo 项目”屏幕。

Initial ToDo List view

在“添加新待办事项”屏幕上,有一个“取消”按钮。

Add New ToDo Item view

相关 ToDoManagerActivity.java fragment :

public void onCreate(Bundle savedInstanceState) {
// Init and setup adapter, etc.

footerView.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(ToDoManagerActivity.this, AddToDoActivity.class);
startActivityForResult(intent, ADD_TODO_ITEM_REQUEST);
}
});

// Attach the adapter to this ListActivity's ListView
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
log("Entered onActivityResult()");

// Check result code and request code.
// If user submitted a new ToDoItem
// Create a new ToDoItem from the data Intent
// and then add it to the adapter
}

相关的 AddToDoActivity.java fragment :

protected void onCreate(Bundle savedInstanceState) {
// Initialize default view, handle other events, etc.

final Button cancelButton = (Button) findViewById(R.id.cancelButton);
cancelButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
setResult(RESULT_CANCELED, new Intent());
finish();
}
});
}

上面的代码有效。以前,我在 cancelButtononClick 处理程序中尝试这样做:

public void onClick(View v) {
finishActivity(RESULT_CANCELED);
}

当我单击“取消”按钮时,我可以看到在日志中到达了 onActivityResult,但屏幕没有返回到主 ToDo 列表屏幕。

为什么上面的代码没有让我返回到上一个屏幕,但下面的代码却让我返回到上一个屏幕?我对任务堆栈/Activity 有什么误解?

public void onClick(View v) {
setResult(RESULT_CANCELED, new Intent());
finish();
}

最佳答案

根据documentation :

public void finish ()

Call this when your activity is done and should be closed. The ActivityResult is propagated back to whoever launched you via onActivityResult().

public void finishActivity (int requestCode)

Force finish another activity that you had previously started with startActivityForResult(Intent, int).

您应该调用 finish() 来关闭当前 Activity ,并调用 finishActivity() 来关闭您使用 startActivityForResult(Intent intent, int requestCode) 开始的另一个 Activity 。对当前 Activity 调用 finishActivity() 不会将其关闭。

此外,为 setResult() 创建一个新的 Intent 没有意义,因为您没有传回任何数据。这样做就足够了:

setResult(RESULT_CANCELED);
finish();

关于java - 我是否需要包含默认 Intent 才能返回到上一个 Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21840405/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com