如何在Click上修复错误的alertDialog?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Click上修复错误的alertDialog?相关的知识,希望对你有一定的参考价值。

我在主UI上显示了2个TextView。我将每个TextView关联到一个唯一的clickListener,该clickListener启动一个唯一的AlertDialog供用户进行选择。第一个TextView正在为第二个AlertDialog启动第二个布局,而不是第一个AlertDialog的第一个布局。我在这里错过了什么?

activity_main.xml file

...
<TextView
        android:id="@+id/fList"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="4dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="20dp"
        android:layout_marginStart="20dp"
        android:text="filter"
        android:textStyle="bold|italic"
        android:textColor="@color/text_primary"
    />

<TextView
        android:id="@+id/qList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:text="quickList"
        android:textStyle="bold"
        android:textColor="@color/text_primary"
        android:gravity="center"
    />

MainActivity.java file

public class MainActivity extends AppCompatActivity
    ...
    protected void onCreate(Bundle savedInstanceState) {        
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView mTextViewFilter = (TextView)findViewById(R.id.fList);
        TextView mTextViewQuickList = (TextView)findViewById(R.id.qList);

        mTextViewFilter.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view){

            final AlertDialog.Builder alertDialogFilter = new AlertDialog.Builder(MainActivity.this);
            LayoutInflater inflaterFilter = getLayoutInflater();

            final ViewGroup nullParent = null;
            // the AlertDialog layout for the first TextView click.
            final View dialogLayoutFilter = inflaterFilter.inflate(R.layout.filter_main, nullParent);
            alertDialogFilter.setView(dialogLayoutFilter);
            final AlertDialog dialogFilter = alertDialogFilter.show();
            ...
         }
     });   

     mTextViewQuickList.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {

            final AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
            LayoutInflater inflater = getLayoutInflater();

            final ViewGroup nullParent = null;
            // the AlertDialog layout for the second TextView click.
            final View dialogLayout = inflater.inflate(R.layout.entire_layout, nullParent);
            alertDialog.setView(dialogLayout);
            final AlertDialog dialog = alertDialog.show();
            ... 
        }
    });        

entire_layout.xml    
...
<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="380dp"
android:minHeight="160dp"  >    

<ImageView
    android:id="@+id/imageViewX"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:paddingRight="20dp"
    android:paddingEnd="20dp"
    android:contentDescription="x"
    android:src="@drawable/ic_close_white_24dp"  />

<TextView
    android:id="@+id/FullList"
    android:layout_below="@+id/imageViewX"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:layout_marginStart="20dp"
    android:layout_marginLeft="20dp"
    android:textStyle="bold"
    android:textAppearance="@android:style/TextAppearance.Large"
    android:text="Show entire list"  />

<TextView
    android:id="@+id/fullNewest"
    android:layout_below="@+id/FullList"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:layout_marginStart="40dp"
    android:layout_marginLeft="40dp"
    android:layout_marginBottom="10dp"
    android:textAppearance="@android:style/TextAppearance.Medium"
    android:text="Created ...  />

filter_main.xml
...
<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="380dp"
android:minHeight="280dp"  >

<ImageView
    android:id="@+id/imageViewX"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:paddingRight="20dp"
    android:paddingEnd="20dp"
    android:contentDescription="x"
    android:src="@drawable/ic_close_white_24dp"  />

<TextView
    android:id="@+id/Filter"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/imageViewX"
    android:layout_marginStart="20dp"
    android:layout_marginLeft="20dp"
    android:textStyle="bold"
    android:textAppearance="@android:style/TextAppearance.Large"
    android:text="Filter..."  />

<TextView
    android:id="@+id/AllDos"
    android:layout_below="@+id/Filter"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:layout_marginStart="40dp"
    android:layout_marginLeft="40dp"
    android:textAppearance="@android:style/TextAppearance.Medium"
    android:text="All..."  />

<TextView
    android:id="@+id/AllBuys"
    android:layout_below="@+id/AllDos"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:layout_marginStart="40dp"
    android:layout_marginLeft="40dp"
    android:textAppearance="@android:style/TextAppearance.Medium"
    android:text="All..."  />

<TextView
    android:id="@+id/AllWork"
    android:layout_below="@+id/AllBuys"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:layout_marginStart="40dp"
    android:layout_marginLeft="40dp"
    android:textAppearance="@android:style/TextAppearance.Medium"
    android:text="All..."  />

<TextView
    android:id="@+id/AllHome"
    android:layout_below="@+id/AllWork"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:layout_marginStart="40dp"
    android:layout_marginLeft="40dp"
    android:textAppearance="@android:style/TextAppearance.Medium"
    android:text="All..."  />

<TextView
    android:id="@+id/AllWaitingfor"
    android:layout_below="@+id/AllHome"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:layout_marginStart="40dp"
    android:layout_marginLeft="40dp"
    android:layout_marginBottom="5dp"
    android:textAppearance="@android:style/TextAppearance.Medium"
    android:text="All..."  />

答案

不确定您的textviews的父级是什么,但因为您使用的属性如下:

android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"

我想这是一个RelativeLayout

由于你既没有使用方向也没有使用相对位置,我认为你的TextViews都在同一条线上,只有不同的边距顶部,但快速列表TextView的宽度为match_parent和重心

android:layout_width="match_parent"
android:gravity="center"

所以发生的事情是这样的:

enter image description here

并且您的点击始终会触发第二个完全覆盖第一个TextView的TextView。

要修复它,请以这种方式更改快速列表TextView:

<TextView
    android:id="@+id/qList"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="8dp"
    android:text="quickList"
    android:textStyle="bold"
    android:textColor="@color/text_primary"
    android:layout_centerHorizontal="true"/>

具有以下属性:

android:layout_width="wrap_content"
android:layout_centerHorizontal="true"

它将居中但不与第一个TextView重叠。

我希望这可能有所帮助,如果我错了,你的activity_main.xml文件不同,请更新你的代码,以便更容易找出任何替代问题。

以上是关于如何在Click上修复错误的alertDialog?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 selenium-webdriver 错误 - $ 未定义?

Android:如何在 PIP 模式下显示 AlertDialog?

如何在 RecyclerView 适配器中的 ClickListener 上显示 AlertDialog

我如何在 AsyncTask 中应用 alertDialog 作为服务器响应

如何修复此错误 3734:无法在 MySQL WorkBench 上添加外键约束?

如何修复 WordPress 中的 HTTP 错误