屏幕方向更改时,无法维护自定义对话框按钮的状态

埃迪亚·克鲁萨(Edijae crusar)

我有一个使用DialogFragment创建的自定义对话框。它使用具有一个按钮和一个edittext的视图。在我的edittext中,我实现了一个textwatcher,其中,如果edittext中有值,则按钮变为可见,否则它将保持不可见。

public  class ShowDialog extends DialogFragment {

private Button btnShowBalance;
private EditText balanceInquiryPinInput;

public ShowDialog(){

}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View myView = inflater.inflate(R.layout.fragment_balance_inquiry,null);

    btnShowBalance= (Button) myView.findViewById(R.id.btnShowBalance);

    balanceInquiryPinInput = (EditText) myView.findViewById(R.id.et_balance_inquiry_pin);

    balanceInquiryPinInput.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

            if(s.length() > 0){
                btnShowBalance.setVisibility(View.VISIBLE);
            }else{
                btnShowBalance.setVisibility(View.INVISIBLE);
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

     btnShowBalance.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showBalance(balanceInquiryPinInput,nameview,ShowDialog.this);
        }
    });


    // Use the Builder class for convenient dialog construction
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setView(myView);

    // Create the AlertDialog object and return it
    return builder.create();
}

}

问题

当我将屏幕方向更改为(例如)横向时,如果在更改方向之前在编辑文本中键入了任何内容,则无论键入什么内容仍然在横向中可见,我的按钮仍然可见,但无法单击。我无法点击它。我必须通过在对话框窗口或返回按钮之外的某个位置按一下来删除对话框,然后再次创建它。

即使更改了屏幕方向,如何使按钮保持可单击状态?

注意:在更改方向之前可以单击它。

编辑

我的对话框由一个处于片段状态而不是活动状态的按钮激活。这个问题不是一个重复的这一个,因为后者是一个活动的implentation,它的实现是不可靠的,以我的看法,它的问题状态(按钮)

为我的自定义对话框布局编辑xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#044848"
>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:gravity="center_horizontal"
    android:background="@drawable/check_balance"
    >

    <EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:id="@+id/et_balance_inquiry_pin"
        android:layout_marginTop="5dp"
        android:gravity="center"
        android:background="@drawable/enter_pin_textview"
        android:inputType="numberPassword"/>

    <Button
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:text="OK"
        android:id="@+id/btnShowBalance"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="10dp"
        android:textColor="@android:color/white"
        android:textSize="20sp"
        android:background="@drawable/show_balance_ok_button"
        android:visibility="invisible" />

</LinearLayout>

用户名

禁用按钮的问题可能是由于在方向更改中调用视图被破坏导致对话框不再起作用。因此它可能仍然可见,但实际上是之前视图被销毁之前的产物。

您需要使用创建对话框片段实例时保存状态的方法。例如你可以打电话

setRetainInstanceState(true);

在您的onCreateDialog方法中,以在屏幕方向更改时保留DialogFragment实例的状态。

onDestroyView()屏幕方向更改时,您可能需要覆盖以防止对话框被破坏。像这样

@Override
public void onDestroyView() {
    if (getDialog() != null && getRetainInstance())
        getDialog().setDismissMessage(null);
    super.onDestroyView();
}

可以在此处找到有关此方法和其他片段方法的信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jQuery UI自定义对话框按钮

来自分类Dev

Summernote自定义对话框和按钮

来自分类Dev

自定义对话框中的按钮| 安卓

来自分类Dev

无法关闭带有自定义按钮的对话框

来自分类Dev

如何自定义警报对话框,以使按钮适合警报对话框

来自分类Dev

Android棉花糖中的屏幕方向更改时的权限对话框使应用程序崩溃

来自分类Dev

对话框自定义布局无法正确拉伸

来自分类Dev

自定义对话框无法关闭

来自分类Dev

Roboletric 无法使自定义对话框可见

来自分类Dev

如何更改打开对话框的图像以及如何自定义对话框?

来自分类Dev

如何在自定义对话框中设置自定义按钮?

来自分类Dev

如何在自定义对话框中设置自定义按钮?

来自分类Dev

方向更改时出现多个“智能锁定”对话框

来自分类Dev

WXPYTHON自定义对话框

来自分类Dev

自定义对话框片段

来自分类Dev

自定义对话框太小

来自分类Dev

自定义进度对话框

来自分类Dev

自定义对话框错误

来自分类Dev

自定义引导对话框

来自分类Dev

自定义对话框的布局

来自分类Dev

如何以编程方式使自定义对话框达到屏幕高度的 100%?

来自分类Dev

在配置更改时维护自定义标记信息窗口

来自分类Dev

使用自定义按钮关闭具有自定义界面的警报对话框

来自分类Dev

单击自定义对话框中的按钮创建无限数量的EditText

来自分类Dev

响应Google文档自定义HTML对话框中的按钮单击事件

来自分类Dev

使用自定义投射按钮时如何启动“连接到设备”对话框?

来自分类Dev

带有关闭按钮的自定义对话框Mahapps ShowMetroDialogAsync

来自分类Dev

带有按钮onClick事件的android自定义对话框

来自分类Dev

在Android中单击“按钮”时关闭自定义对话框

Related 相关文章

热门标签

归档