sách gpt4 ai đã đi

Làm thế nào để xóa một Hoạt động cụ thể khỏi ngăn xếp Hoạt động dựa trên một số hành động?

In lại 作者:行者123 更新时间:2023-11-29 00:57:21 31 4
mua khóa gpt4 Nike

我正在开发一个应用程序,我需要根据某些操作导航到特定 Activity 。这是一张图片

nhập mô tả hình ảnh ở đây

我的第一个 Activity 是 ReadingActivity。基于某些操作,用户将被带到 NewProjectReadingActivity。用户将有两个选择。

选项一
方案二

根据用户选择的选项,他/她将被带到 ReadingInputActivity。从 ReadingInputActivity 获取输入后,用户将被转发到 ReadingConfirmationActivity。会有三个选项

选项一
方案二
方案三

如果用户选择选项一,那么他/她将被带到非常简单的 ReadingActivity。我将清除堆栈并再次启动 ReadingActivity,如果他/她按下后退按钮,应用程序将最小化,这完全没问题。但是,如果用户选择选项二,那么他/她将被带到 NewProjectReadingActivity。如果我清除 Activity 堆栈并再次启动 NewProjectReadingActivity,那么它将启动 NewProjectReadingActivity,但问题是如果用户按下后退按钮,它将最小化我的应用程序,因为它是 Activity 堆栈中唯一存在的 Activity 。

我想要的是,如果用户在 ReadingConfirmationActivity 上选择选项二,那么用户将被带到 NewReadingActivity,这意味着我想删除 ReadingConfirmationActivity(这很容易,只需调用 finish())并且 Activity 在此之前开始 Activity 即 ReadingInputActivity。

上面提到的每个 Activity 都托管一个 fragment 。我在下面提供 Activity 代码。

阅读 Activity

public class ReadingActivity extends BaseAppCompatActivity {

@Ghi đè
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if( savedInstanceState == null ) {
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, ReadingFragment.getInstance(), ReadingFragment.TAG).commit();
}
setDisplayHomeAsUpEnabled(true);
setActionBarText(getString(R.string.new_project_reading));
}

@Ghi đè
protected void setupContentView() {
setContentView(R.layout.activity_reading);
}

public static Intent newIntent(Context context) {
Intent intent = new Intent(context, ReadingActivity.class);
return intent;
}
}

新建项目阅读 Activity

public class NewProjectReadingActivity extends BaseAppCompatActivity {

@Ghi đè
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if( savedInstanceState == null ) {
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, NewProjectReadingFragment.getInstance(), NewProjectReadingFragment.TAG).commit();
}
setDisplayHomeAsUpEnabled(true);
setActionBarText(getString(R.string.new_project_reading));
}

@Ghi đè
protected void setupContentView() {
setContentView(R.layout.activity_new_project_reading);
}

public static Intent newIntent(Context context) {
Intent intent = new Intent(context, NewProjectReadingActivity.class);
return intent;
}
}

阅读输入 Activity

public class ReadingInputActivity extends BaseAppCompatActivity {

private static final String EXTRA_VALUE_TYPE = "value_type";
private int valueType = 0;

@Ghi đè
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
valueType = getIntent().getIntExtra(EXTRA_VALUE_TYPE, 0);
if( savedInstanceState == null ) {
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, ReadingInputFragment.getInstance(valueType), ReadingInputFragment.TAG).commit();
}
setDisplayHomeAsUpEnabled(true);
setActionBarText(getString(R.string.reading_input));
}

@Ghi đè
protected void setupContentView() {
setContentView(R.layout.activity_reading_input);
}

public static Intent newIntent(Context context, int valueType) {
Intent intent = new Intent(context, ReadingInputActivity.class);
intent.putExtra(EXTRA_VALUE_TYPE, valueType);
return intent;
}
}

阅读确认 Activity

public class ReadingConfirmationActivity extends BaseAppCompatActivity {

private static final String EXTRA_VALUE_TYPE = "value_type";
private static final String EXTRA_READING_VALUE = "reading_value";
private int valueType = 0;
private double readingValue = 0;

@Ghi đè
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
valueType = getIntent().getIntExtra(EXTRA_VALUE_TYPE, 0);
readingValue = getIntent().getDoubleExtra(EXTRA_READING_VALUE, 0);
if( savedInstanceState == null ) {
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, ReadingConfirmationFragment.getInstance(valueType, readingValue), ReadingConfirmationFragment.TAG).commit();
}
setDisplayHomeAsUpEnabled(true);
setActionBarText(getString(R.string.reading_input));
}

@Ghi đè
protected void setupContentView() {
setContentView(R.layout.activity_reading_confirmation);
}

public static Intent newIntent(Context context, int valueType, double readingValue) {
Intent intent = new Intent(context, ReadingConfirmationActivity.class);
intent.putExtra(EXTRA_VALUE_TYPE, valueType);
intent.putExtra(EXTRA_READING_VALUE, readingValue);
return intent;
}
}

1 Câu trả lời

你写道:

What i want is that if the user selects Option Two on the ReadingConfirmationActivity then the user will be taken to the NewReadingActivity that means i want to remove ReadingConfirmationActivity (which is easy just call the finish()) and the activity started before that activity i,e ReadingInputActivity.

为此,当用户在 ReadingConfirmationActivity 中选择选项二时,您将执行以下操作:

Intent intent = new Intent(this, NewReadingActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

这将导致顶部(包括)的所有 Activity NewReadingActivity完成。 NewReadingActivity 的新实例将被创建并显示给用户。如果您希望返回到 NewReadingActivity 的现有实例,您也可以通过添加 Intent.FLAG_ACTIVITY_SINGLE_TOP 来做到这一点到 Intent .

关于android - 如何根据某些操作从 Activity 堆栈中删除特定 Activity/Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53705970/

31 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com