AlertDialog Builder控制访问

时间:2012-10-29 12:40:18

标签: android android-layout

我有一个Custom AlertDialog.Builder但我无法访问EditText。

这是我的DEFAULT类;

        AlertDialog.Builder Builder = new AlertDialog.Builder(this);

        LayoutInflater Inflater = this.getLayoutInflater();

        View AddCategory = Inflater.inflate(R.layout.category_new, null);

        final EditText etCategoryName = (EditText) AddCategory.findViewById(R.id.btnAddCategory);

        Builder.setView(AddCategory)
        .setTitle("Add Category")
        .setPositiveButton("ADD", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                Time Today = new Time(Time.getCurrentTimezone());
                Today.setToNow();

                //This code has error !...
                String CategoryName = etCategoryName.getText().toString();
            }
        })
        .setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                dialog.cancel();
            }
        }); 

        Builder.show();

此 String CategoryName = etCategoryName.getText()。toString();

这是我的Costum AlertDialog布局;

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="60dp" >

<TextView
    android:id="@+id/tvAddCategoryName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="15dp"
    android:text="@string/AddCategoryName"
    android:textColor="@color/White"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<EditText
    android:id="@+id/etAddCategoryName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/tvAddCategoryName"
    android:layout_alignBottom="@+id/tvAddCategoryName"
    android:layout_toRightOf="@+id/tvAddCategoryName"
    android:layout_marginLeft="20dp"
    android:hint="@string/CategoryName"
    android:ems="10" >

    <requestFocus />
</EditText>

请帮帮我......

3 个答案:

答案 0 :(得分:2)

试试这个。

final EditText etCategoryName = (EditText) AddCategory.findViewById(R.id.etAddCategoryName);

在您的xml文件中,您的editText标识为etAddCategoryName,并在您的java文件中初始化不同的名称(btnAddCategory)。

因此,请将btnAddCategory更改为etAddCategoryName

答案 1 :(得分:1)

出现问题是因为您传递了按钮ID而不是edittext id

请在下面的代码行中写下

final EditText etCategoryName = (EditText) AddCategory.findViewById(R.id.etAddCategoryName);

而不是

final EditText etCategoryName = (EditText) AddCategory.findViewById(R.id.btnAddCategory);

答案 2 :(得分:0)

如果您错误地输入了EditText id,那么就放置了R.id.btnAddCategory,看起来它应该是R.id.etAddCategoryName。