Android 如何阻止三星S9边缘按钮周围DialogFragment背景的点击事件
我有一个显示阻塞对话框片段的UI要求,不能通过单击后台来取消它。 此外,当显示DialogFragment时,无法单击其下的任何视图 除了在三星S9设备上,一切都很好。 在三星S9上,它有一个边缘按钮,当点击边缘按钮的边缘时,DialogFragment下的视图被点击,事件被执行,这与预期不同 下面是一个示例代码:Android 如何阻止三星S9边缘按钮周围DialogFragment背景的点击事件,android,Android,我有一个显示阻塞对话框片段的UI要求,不能通过单击后台来取消它。 此外,当显示DialogFragment时,无法单击其下的任何视图 除了在三星S9设备上,一切都很好。 在三星S9上,它有一个边缘按钮,当点击边缘按钮的边缘时,DialogFragment下的视图被点击,事件被执行,这与预期不同 下面是一个示例代码: public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bu
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyDialogFragment myDialogFragment = new MyDialogFragment();
myDialogFragment.show(getSupportFragmentManager(), MyDialogFragment.TAG);
}
});
findViewById(R.id.background).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("wrong", "clicked!!!!---------------");
Toast.makeText(MainActivity.this, "Click!", Toast.LENGTH_LONG).show();
}
});
}
}
布局非常简单,只是一个带有按钮的线性布局。
单击按钮将显示阻止对话框。
LinearLayout id为背景,显示对话框后不应单击背景
对话框代码:
公共类MyDialogFragment扩展了DialogFragment{
公共静态最终字符串TAG=“Dialog”
}
但是现在,当对话框显示时,单击边缘按钮上的区域,可以输入背景click listener,我可以获取日志和土司。
如何防止这种情况?可设置取消(false);可用于阻止在我要执行的事件中在任务完成之前单击后台
Fragment currentFrag = getSupportFragmentManager().findFragmentByTag(MyDialogFragment_TAG);
if (!(currentFrag instanceof MyDialogFragment))
{
// your code for when you're dialog fragment is not visible
}
我已经设置了一个(参见onCreate中的代码)。它可以在其他设备上工作,但不能阻挡三星s9边缘按钮周围的触摸区域。
Fragment currentFrag = getSupportFragmentManager().findFragmentByTag(MyDialogFragment_TAG);
if (!(currentFrag instanceof MyDialogFragment))
{
// your code for when you're dialog fragment is not visible
}