如果我在第一次点击后立即按两次按钮,我试图阻止活动加载两次.
我有一个活动,点击按钮加载,比方说
myButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
//Load another activity
}
});
Run Code Online (Sandbox Code Playgroud)
现在因为要加载的活动具有网络调用,所以加载(MVC)需要一些时间.我确实显示了加载视图,但如果我在此之前按下按钮两次,我可以看到活动被加载两次.
有谁知道如何防止这种情况?
当我尝试从一个片段导航到另一个片段时,我遇到了新的Android导航架构组件的问题,我得到了这个奇怪的错误:
java.lang.IllegalArgumentException: navigation destination XXX
is unknown to this NavController
Run Code Online (Sandbox Code Playgroud)
每个其他导航工作正常,除了这个特定的导航
我用:
findNavContoller()
Run Code Online (Sandbox Code Playgroud)
Fragment的扩展功能可以访问navControler.
任何帮助将不胜感激.
我正在使用两个按钮.同时单击两个按钮时,它将一次进入不同的活动.怎么避免这个?
我试过这样的,但它不起作用请保存....
public class MenuPricipalScreen extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menu_principal_layout);
findViewById(R.id.imageView2).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
disable(findViewById(R.id.imageView3));
Intent intent = new Intent(MenuPricipalScreen.this,
SelectYourLanguageVideo.class);
startActivity(intent);
}
});
findViewById(R.id.imageView3).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
disable(findViewById(R.id.imageView2));
Intent intent = new Intent(MenuPricipalScreen.this,
CategoryScreen.class);
intent.putExtra("request", "false");
startActivity(intent);
}
});
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
((ImageView) findViewById(R.id.imageView3)).setEnabled(true); …Run Code Online (Sandbox Code Playgroud) 我有几个关于活动的观点,用户想要连续快速触摸,我使用TouchListener和处理捕获这些触摸MotionEvent.ACTION_DOWN.但是,如果用户使用双手,则在用户拉出上一根手指之前,下一个视图很可能会被"触摸".在这种情况下,将MotionEvent.ACTION_MOVE针对第一个视图而不是MotionEvent.ACTION_DOWN第二个视图的期望触发a .
有没有办法解决或阻止这种行为?我已尝试使用MotionEvent.ACTION_UP并删除事件监听器来调度新事件但似乎都不起作用.
这很奇怪,但如果你在一个TextView(或不可编辑的EditText) 上放一个onClickListener,android:textIsSelectable="true"它不需要一次点击,而是两次.我在3部手机上检查了它,所有这些都只在第二次点击后执行onClick.
当然,如果您在第一次点击时制作focusable="false"或android:textIsSelectable="false"工作,但文字选择不起作用.
请帮我解决这个问题
如果我快速点击我的Android应用程序中的按钮,它背后的代码似乎运行两次.如果我单击我的菜单按钮两次,必须启动的活动onclick只启动两次,我必须从它退出两次.
这真的很烦人,因为如果我点击太快的菜单按钮我可以在后台加载一大堆活动,我必须逐个退出它们,所以这显然是我的应用程序的错误状态我想解决这个问题.
我该怎么办这个问题?
我使用简单的onClickListeners和Buttons
编辑:
关于答案和评论,我的菜单按钮如下所示:
top20Button.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
favButton.setClickable(false);
nearButton.setClickable(false);
highlightedButton.setClickable(false);
top20Button.setClickable(false);
Intent i = new Intent();
i.putExtra("showDialog", false);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
i.setClass(Search.this, Top20.class);
startActivity(i);
finish();
}
});
Run Code Online (Sandbox Code Playgroud)
在所有这些修正之后它仍然是相同的:S当我像疯子一样点击时,多个活动在历史堆栈上,我必须多次退出.
有什么建议 ?什么mi做错了?
我已经看过这里的答案 - Android防止双击一个按钮
并实现了qezt的解决方案,我试过setEnabled(false)这样 -
doneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// mis-clicking prevention, using threshold of 1 second
if (SystemClock.elapsedRealtime() - doneButtonClickTime < 1000){
return;
}
//store time of button click
doneButtonClickTime = SystemClock.elapsedRealtime();
doneButton.setEnabled(false);
//do actual work
}
});
Run Code Online (Sandbox Code Playgroud)
这些都不能对抗超快速双击.
注意 - doneButton.setEnabled(true)我的处理完成后我没有设置.我只是简单地完成了()活动,所以没有按钮过早启用的问题.
无论如何都要防止ListView在Android中双击?当我意外地敲击物品时,我发现了这个ListView,它打开了两个新窗口.有没有办法防止它两次打开同一个窗口.
我有一个使用导航组件构建的应用程序。我的图表中有一个字段,单击工具栏上的过滤器图标后,该字段会向上滑动底部工作表对话框片段。但是,如果我非常快速地双击工具栏过滤器图标,或者非常快速地单击工具栏过滤器图标和任何与其关联的导航的其他视图,我的应用程序将崩溃并显示以下错误消息:
java.lang.IllegalArgumentException: navigation destination com.th3pl4gu3.locky:id/action_Fragment_Card_to_Fragment_View_Card is unknown to this NavController
Run Code Online (Sandbox Code Playgroud)
下面是我的工具栏过滤器图标的代码示例。
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.Toolbar_Filter -> {
findNavController().navigate(CardFragmentDirections.actionFragmentCardToBottomSheetFragmentCardFilter())
true
}
else -> false
}
}
Run Code Online (Sandbox Code Playgroud)
这是导航架构组件的正常行为吗?
如果没有,您能为我提供修复吗?
android kotlin android-architecture-navigation android-jetpack-navigation android-bottomsheetdialog
我的片段中没有几个自定义的六边形视图,双击六边形视图可打开2个活动。我尝试了几种方法来避免这种行为,但似乎都没有用。不知道为什么以下事情不起作用。
我已经尝试了这篇文章《Android防止双击按钮》中的所有内容,但在我的情况下,这些都不起作用。我不确定在这种情况下到底有什么奇怪的。
我尝试过的第一件事是通过将“活动”启动模式设置为“ singleTop”。那没用。所以我尝试了其他方法,例如singleInstance,singleTask。
然后我尝试禁用单击六角形视图并在onResume中启用它。即使那没有用。尝试保存单击时的最终单击时间。即使那没有用。
这是我的代码片段。
public class MenuFragment extends BaseFragment implements
OnHexagonClickListener{
....
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_land_menu, container, false);
ScrollView scroll_hexagon = view.findViewById(R.id.scroll_hexagon);
isFirst = true;
loadMenuData();
scroll_hexagon.post(new Runnable() {
@Override
public void run() {
int design_hexagon_width = getResources().getDimensionPixelSize(R.dimen.dimen_190dp);
int design_hexagon_height = getResources().getDimensionPixelSize(R.dimen.dimen_160dp);
int design_padding_horizontal = getResources().getDimensionPixelSize(R.dimen.dimen_5dp);
int design_margin_horizontal = getResources().getDimensionPixelSize(R.dimen.dimen_3dp);
int design_margin_vertical = getResources().getDimensionPixelSize(R.dimen.dimen_5dp);
int design_margin_top = 0; //getResources().getDimensionPixelSize(R.dimen.dimen_5dp);
int scroll_width = scroll_hexagon.getWidth();
int hexagon_width …Run Code Online (Sandbox Code Playgroud) 我有一个案例,当我按下一个按钮它与Web服务进行通信我遇到的问题是,如果你双击该按钮它会调用Web服务两次导致双重提交.有任何想法如何防止按钮接受第二次点击?我查看了这篇文章,但似乎解决方案不起作用.
我有一个按钮,单击时会显示一个对话框。但是,当您多次快速单击按钮时,它将在屏幕上显示2个或更多对话框。取决于您在对话框显示之前单击按钮多少次。所以我必须多次关闭每个对话框...
我已经使用了dialog.isShowing,但是当您多次快速单击按钮时,它似乎将忽略它。
...所以我想在对话框关闭时单击按钮。
private var mFlag = false
fun myButton(view : View) {
var tempDialog = AlertDialog.Builder(this).create()
if (!mFlag) {
myDialog.show()
mFlag = true
}
if(dialog.isShowing){
mFlag = false
}
}
Run Code Online (Sandbox Code Playgroud) android ×12
android-architecture-navigation ×2
button ×2
kotlin ×2
onclick ×2
dialog ×1
launchmode ×1
multi-touch ×1
textview ×1
view ×1