Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中只标记一个活动实例?_Android_Android Activity_Android Button - Fatal编程技术网

如何在android中只标记一个活动实例?

如何在android中只标记一个活动实例?,android,android-activity,android-button,Android,Android Activity,Android Button,在我的android应用程序中,我有一个按钮,单击该按钮可以打开另一个活动。问题是,用户可以快速多次点击该按钮,它会打开许多新的活动。我如何强制它,以便一次只能打开其中一个活动 我想避免做诸如禁用按钮或放置加载屏幕之类的大事。设置Intent。标记活动\u SINGLE\u TOP。这将确保只创建一个活动实例: 如果已设置,则如果活动已在历史堆栈顶部运行,则不会启动该活动 如果场景像您描述的那样简单,您可以使用启动活动。这将阻止创建新实例(如果已经显示了实例)。一个粗略的例子: btn.setO

在我的android应用程序中,我有一个按钮,单击该按钮可以打开另一个活动。问题是,用户可以快速多次点击该按钮,它会打开许多新的活动。我如何强制它,以便一次只能打开其中一个活动


我想避免做诸如禁用按钮或放置加载屏幕之类的大事。

设置
Intent。标记活动\u SINGLE\u TOP
。这将确保只创建一个活动实例:

如果已设置,则如果活动已在历史堆栈顶部运行,则不会启动该活动


如果场景像您描述的那样简单,您可以使用启动活动。这将阻止创建新实例(如果已经显示了实例)。一个粗略的例子:

btn.setOnClickListener(new OnClickListener()
{
    @Override
    public void onClick(View v) {
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent intent = new Intent(MainActivity.this, CalledActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                startActivity(intent);
            }
        }, 1000);
    }
});

快速按下按钮将创建许多没有Intent标志的
CalledActivity
实例。

为什么需要在1秒后运行它。这是不是有时间问题?@omega不,一点也不!这只是一个很容易重现您描述的“多次按下按钮”问题的示例。:)