gpt4 book ai didi

java - 如何阻止多个 Intent 依次打开?

转载 作者:行者123 更新时间:2023-12-01 21:34:25 27 4
gpt4 key购买 nike

我在一个 Java Activity 中显示了一份发票列表,并且我添加了单击其中一张发票以打开显示其详细信息的新 Activity 的功能(使用 Intent )。问题是,新 Activity 不会立即打开,如果用户在加载发票之前多次单击发票,它们都会加载到屏幕上,并且用户必须退出所有发票。

我曾尝试摆弄修复此问题的 Intent ,但我不知道从哪里开始,我正在寻找某种功能,可以阻止任何点击执行任何操作,直到第一个点击加载完成。我将在下面包含我的方法的代码。

        final ListView listView = root.findViewById(R.id.invoices_list);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent showDetailedInvoice = new Intent(getActivity(), DetailedInvoiceActivity.class);
try {
Invoice invoice = new Invoice(invoices.getJSONObject(position));
showDetailedInvoice.putExtra("invoice", invoice);
showDetailedInvoice.putExtra("user", user);
startActivity(showDetailedInvoice);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}

最佳答案

你有一些方法:

1-在用户单击一次后禁用项目,以便在 Activity 出现之前他无法单击另一项(因此只允许一个)

2- 按时间控制点击次数,例如每秒一次。您需要保存用户上次单击的时间,并将当前时间与该时间进行比较,并检查至少过去了一秒。 Activity 可能会在 1 秒前打开。为此,您可以使用 System.currentTimeInMillis(),因此您将得到如下内容:

private Long lastTimeUserClicked = null;

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Long clickTime = System.currentTimeInMillis();
if(lastTimeUserclicked==null || clickTime - lasTimeUserClicked > 1000) { //1000 millisecs = 1 sec
//Do your stuff ...
lastTimeUserClicked = clickTime;
}
}

3-如果您打开的 Activity 只有一个,并且您更改了其数据,您可以将 Intent 设置为具有 Intent 标志的 SingleTop:

Intent showDetailedInvoice = new Intent(getActivity(), DetailedInvoiceActivity.class);

showDetailedInvoice.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)

注意:不确定您之前是否需要透明顶部。如果它不适用于 SINGLE_TOP,则只能尝试在之前添加

showDetailedInvoice.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)

关于java - 如何阻止多个 Intent 依次打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58806999/

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