Android alertDialog的setContentView

Android alertDialog的setContentView,android,android-layout,android-alertdialog,Android,Android Layout,Android Alertdialog,如果有两个文本编辑,则在对话框中弹出该对话框。我想从提交时的文本编辑中获取信息,但不知道如何获取。我也不知道如何在普通对话框中执行提交或取消按钮(我知道您可以在带有“setNegativeButton”的alertDialog上执行) 那么,如何向常规对话框添加提交或取消?到目前为止,我的工作就是: public void changeEmail(View v){ Dialog dialog = new Dialog(this); dialog.setContentView(

如果有两个文本编辑,则在对话框中弹出该对话框。我想从提交时的文本编辑中获取信息,但不知道如何获取。我也不知道如何在普通对话框中执行提交或取消按钮(我知道您可以在带有“setNegativeButton”的alertDialog上执行)

那么,如何向常规对话框添加提交或取消?到目前为止,我的工作就是:

public void changeEmail(View v){

    Dialog dialog =  new Dialog(this);
    dialog.setContentView(R.layout.change_email_dialog);
    dialog.setTitle("Enter your new email");
    dialog.show();


}
我想我也在想,是否有人能快速解释一下,我将如何从对话框使用的布局中的两个文本编辑中获取信息?

创建自己的对话框

class YourDialog extends Dialog {

private TextView mTextView1, mTextView1;
private Button mButton1, mButton2;

public YourDialog(Context context) {
    super(context);


}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.change_email_dialog);

    // init your component from layout
    // and add listiner to them

}

}

你可以试试这个代码。我这样做是为了从对话框中获取一个值。使用文本和文本2的值

创建布局文件:custom.xml

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

    <TextView
        android:id="@+id/text1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textColor="#FFF" />

    <TextView
        android:id="@+id/text2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textColor="#FFF"/>

</RelativeLayout>
这里有一个链接,可以找到你想要的


这里有一个关于堆栈溢出的问题,它提供了有关自定义对话框的信息。

我一直面临着完全相同的障碍

这是我在一项研究之后做的

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:weightSum="1"
tools:context="com.example.sinnaren.simply.MainActivity">
<Button
    android:id="@+id/button_add_title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:text="Add a title"
    android:textAllCaps="false"/>
</LinearLayout>
myDialogFragment.java

public class myDialogFragment extends DialogFragment {
private Dialog alert;
MyDialogListener dialogListener;

public interface MyDialogListener {
    public void onDialogPositiveClick(DialogFragment dialog, String namel, String desc);
    public void onDialogNegativeClick(DialogFragment dialog);
}

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    dialogListener = (MyDialogListener)context;
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    Log.w("onCreateDialog", "onCreateDialog: onCreateDialog invoked");
    AlertDialog.Builder alertDialogBuider = new AlertDialog.Builder(getActivity());

    alertDialogBuider.setTitle("Add a Title");

    LayoutInflater inflater = getActivity().getLayoutInflater();
    final View dialogView = inflater.inflate(R.layout.dialog_add_title_list, null);
    alertDialogBuider.setView(dialogView);
    alertDialogBuider.setPositiveButton("Add", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            EditText textChapterName = (EditText)dialogView.findViewById(R.id.edit_add_title);
            EditText textChapterDesc = (EditText)dialogView.findViewById(R.id.edit_add_desc);
            dialogListener.onDialogPositiveClick(myDialogFragment.this,
                    textChapterName.getText().toString(),
                    textChapterDesc.getText().toString());
        }
    });

    alertDialogBuider.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialogListener.onDialogNegativeClick(myDialogFragment.this);
        }
    });

    return alertDialogBuider.create();
}

@Override
public void onDismiss(DialogInterface dialog) {
    super.onDismiss(dialog);
    Toast.makeText(getActivity(), "Dialog: onDismiss", Toast.LENGTH_SHORT).show();
    }
}
使用支持库时,请确保导入的是android.support.v4.app.DialogFragment类,而不是android.app.DialogFragment

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:weightSum="1"
tools:context="com.example.sinnaren.simply.MainActivity">
<Button
    android:id="@+id/button_add_title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:text="Add a title"
    android:textAllCaps="false"/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialog_chapter"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<EditText
    android:id="@+id/edit_add_title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="title name"
    android:inputType="textCapWords"
    android:textAllCaps="false" />

<EditText
    android:id="@+id/edit_add_desc"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="title description"
    android:inputType="textCapSentences"
    android:textAllCaps="false" />
</LinearLayout>
public class MainActivity extends AppCompatActivity implements myDialogFragment.MyDialogListener {
private Button buttonAdd;
private myDialogFragment dialog;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    dialog = new myDialogFragment();
    buttonAdd = (Button)findViewById(R.id.button_add_title);

    buttonAdd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.i("MainActivity", "onClick: going to show dialog");
            dialog.show(getSupportFragmentManager(), "myCustomAlert !!");

        }
    });

}

@Override
public void onDialogPositiveClick(DialogFragment dialog, String name, String desc) {
    Toast.makeText(getApplicationContext(), "name :" + name + "description :" + desc, Toast.LENGTH_SHORT).show();
}

@Override
public void onDialogNegativeClick(DialogFragment  dialog) {
    Toast.makeText(getApplicationContext(), "Cancel clicked", Toast.LENGTH_SHORT).show();
    }
}
public class myDialogFragment extends DialogFragment {
private Dialog alert;
MyDialogListener dialogListener;

public interface MyDialogListener {
    public void onDialogPositiveClick(DialogFragment dialog, String namel, String desc);
    public void onDialogNegativeClick(DialogFragment dialog);
}

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    dialogListener = (MyDialogListener)context;
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    Log.w("onCreateDialog", "onCreateDialog: onCreateDialog invoked");
    AlertDialog.Builder alertDialogBuider = new AlertDialog.Builder(getActivity());

    alertDialogBuider.setTitle("Add a Title");

    LayoutInflater inflater = getActivity().getLayoutInflater();
    final View dialogView = inflater.inflate(R.layout.dialog_add_title_list, null);
    alertDialogBuider.setView(dialogView);
    alertDialogBuider.setPositiveButton("Add", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            EditText textChapterName = (EditText)dialogView.findViewById(R.id.edit_add_title);
            EditText textChapterDesc = (EditText)dialogView.findViewById(R.id.edit_add_desc);
            dialogListener.onDialogPositiveClick(myDialogFragment.this,
                    textChapterName.getText().toString(),
                    textChapterDesc.getText().toString());
        }
    });

    alertDialogBuider.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialogListener.onDialogNegativeClick(myDialogFragment.this);
        }
    });

    return alertDialogBuider.create();
}

@Override
public void onDismiss(DialogInterface dialog) {
    super.onDismiss(dialog);
    Toast.makeText(getActivity(), "Dialog: onDismiss", Toast.LENGTH_SHORT).show();
    }
}