当前位置: 首页 > 知识库问答 >
问题:

alertDialog带有xml中的PositiveButton和NegativeButton

羊和光
2023-03-14

我有alert对话框和PositiveButton和NegativeButton都是以编程方式设置的,我想从xml布局中检索它们,我试图这样做,但我对android开发还不熟悉,

任何帮助都将不胜感激,谢谢。

主要活动:

 public class MainActivity extends Activity {
final Context context = this;
private Button button;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);

     setContentView(R.layout.main);  

    TextView tv=(TextView)findViewById(R.id.introclusion_tv1);
    tv.setTypeface(FontFactory.getBFantezy(getBaseContext()));

    TextView tv1=(TextView)findViewById(R.id.introclusion_tv2);
    tv1.setTypeface(FontFactory.getBFantezy(getBaseContext()));
    tv1.setText(Html.fromHtml(getString(R.string.introclusion)));



button = (Button) findViewById(R.id.button1);

// add button listener
button.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {

        LayoutInflater li = LayoutInflater.from(arg0.getContext());
        final View dialog_layoutView = li.inflate(R.layout.dialog_layout, null);
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(arg0.getContext());

        alertDialogBuilder.setView(dialog_layoutView);
        alertDialogBuilder

                .setCancelable(false)
                .setPositiveButton("OK",

                        new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,int id) {

                            EditText username = (EditText) dialog_layoutView.findViewById(R.id.txt_name);
                            EditText password = (EditText) dialog_layoutView.findViewById(R.id.password);

                                if(username.getText().toString().length() > 0 && password.getText().toString().length() > 0 ) {
                                    if(username.getText().toString().equals("test") && password.getText().toString().equals("test")) {
                                Intent intent = new Intent(MainActivity.this,Text.class);
                                startActivity(intent);
                                finish();}
                                    else{
                                        // get your custom_toast.xml layout
                                        LayoutInflater inflater = getLayoutInflater();

                                        View layout = inflater.inflate(R.layout.custom_toast,
                                                (ViewGroup) findViewById(R.id.custom_toast));

                                        // set a dummy image
                                        ImageView image = (ImageView) layout.findViewById(R.id.image_toast);
                                        image.setImageResource(R.drawable.ic_launcher);

                                        // set a message
                                        TextView text = (TextView) layout.findViewById(R.id.text_toast);
                                        text.setText("Wrong username or password");

                                        // Toast...
                                        Toast toast = new Toast(getApplicationContext());
                                        toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
                                        toast.setDuration(Toast.LENGTH_LONG);
                                        toast.setView(layout);
                                        toast.show();}}}    


                        })
                .setNegativeButton("Cancel",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                dialog.cancel();
                            }
                        });

        // create alert dialog
        AlertDialog alertDialog = alertDialogBuilder.create();

        // show it
        alertDialog.show();

    }

});

 }

 }

dialog\u布局。xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10sp" >

<EditText
    android:id="@+id/txt_name"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/dialog_uname"
    android:singleLine="true" >

    <requestFocus />
</EditText>

<EditText
    android:id="@+id/password"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:inputType="textPassword" >
</EditText>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <Button
        android:id="@+id/btn_ok"
        android:layout_width="120dp"
        android:layout_height="wrap_content"
        android:text="@string/dialog_submit" />

    <Button
        android:id="@+id/btn_cancel"
        android:layout_width="120dp"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="10dp"
        android:layout_toRightOf="@+id/btn_ok"
        android:text="@string/dialog_cancel" />
</RelativeLayout>

编辑:

  public class MainActivity extends Activity {
final Context context = this;
private Button button;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);

     setContentView(R.layout.main);  

    TextView tv=(TextView)findViewById(R.id.introclusion_tv1);
    tv.setTypeface(FontFactory.getBFantezy(getBaseContext()));

    TextView tv1=(TextView)findViewById(R.id.introclusion_tv2);
    tv1.setTypeface(FontFactory.getBFantezy(getBaseContext()));
    tv1.setText(Html.fromHtml(getString(R.string.introclusion)));



button = (Button) findViewById(R.id.button1);

// add button listener
button.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {

        LayoutInflater li = LayoutInflater.from(arg0.getContext());
        final View dialog_layoutView = li.inflate(R.layout.dialog_layout, null);
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(arg0.getContext());

        alertDialogBuilder.setView(dialog_layoutView);
        alertDialogBuilder

        .setCancelable(false);

                        /////////

                Button okBtn= (Button) dialog_layoutView.findViewById(R.id.btn_ok);
                okBtn.setOnClickListener(new OnClickListener()
                {
                    @Override
                    public void onClick(View v)
                    {
                        EditText username = (EditText) dialog_layoutView.findViewById(R.id.txt_name);
                        EditText password = (EditText) dialog_layoutView.findViewById(R.id.password);

                            if(username.getText().toString().length() > 0 && password.getText().toString().length() > 0 ) {
                                if(username.getText().toString().equals("test") && password.getText().toString().equals("test")) {
                            Intent intent = new Intent(MainActivity.this,Text.class);
                            startActivity(intent);
                            finish();}
                                else{
                                    // get your custom_toast.xml layout
                                    LayoutInflater inflater = getLayoutInflater();

                                    View layout = inflater.inflate(R.layout.custom_toast,
                                            (ViewGroup) findViewById(R.id.custom_toast));

                                    // set a dummy image
                                    ImageView image = (ImageView) layout.findViewById(R.id.image_toast);
                                    image.setImageResource(R.drawable.ic_launcher);

                                    // set a message
                                    TextView text = (TextView) layout.findViewById(R.id.text_toast);
                                    text.setText("Wrong username or password");

                                    // Toast...
                                    Toast toast = new Toast(getApplicationContext());
                                    toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
                                    toast.setDuration(Toast.LENGTH_LONG);
                                    toast.setView(layout);
                                    toast.show();}}}}
                        );
                Button cancelBtn = (Button) dialog_layoutView.findViewById(R.id.btn_cancel);    

                cancelBtn.setOnClickListener(new OnClickListener()
                {
                    @Override
                    public void onClick(View v)
                    {
                        dialog.cancel();
                    }
                });
                ///////



        // create alert dialog
        AlertDialog alertDialog = alertDialogBuilder.create();

        // show it
        alertDialog.show();

    }

});
   }
  }

共有2个答案

鲁炳
2023-03-14

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" >

      <Button
          android:id="@+id/dialogButtonCancell"
          android:layout_width="75dp"
          android:layout_height="75dp">

      <Button
          android:id="@+id/dialogButtonOK"
          android:layout_width="80dp"
          android:layout_height="70dp"/>

</RelativeLayout>

Java代码:

// custom dialog
final Dialog dialog = new Dialog(context);
//name of xml - custom
dialog.setContentView(R.layout.custom);

// set the custom dialog components - text, image and button
Button dialogButtonOK = (Button) dialog.findViewById(R.id.dialogButtonOK);
Button dialogButtonCancell = (Button) dialog.findViewById(R.id.dialogButtonCancell);

  dialog.setTitle("Warning!!!!!");

// if button is clicked, call some method..
dialogButtonOk.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {
    someMethod();
    }
});

dialogButtonCancell.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {                            
   dialog.dismiss();                        
   }
});
dialog.show();
韶浩博
2023-03-14

您可以使用对话框布局检索按钮,就像使用编辑文本一样

Button okBtn= (Button) dialog_layout.findViewById(R.id.btn_ok);
Button cancelBtn = (Button) dialog_layout.findViewById(R.id.btn_cancel);

然后将您设置为单击Listener

okBtn.setOnClickListener(new OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        // some code
    }
});
cancelBtn.setOnClickListener(new OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        // some code
    }
});
 类似资料:
  • 我尝试开发一个小android应用程序,并显示一个对话框警报,其中只包含一个edittext,以填充自定义内容作为下一个链接 创建自定义布局我有这个代码,但它不工作 } 但是代码循环运行 我不明白 在我班上的主要活动 我有这个密码 这是我的风格。xml 我的logcat是下一个 谢谢你的帮助,

  • 让我预先感谢你的帮助! 我在一个spring boot应用程序中有一个奇怪的行为。我来给你解释一下: 我正在用一些不错的rest-json服务包装一些遗留的Web服务(自定义xml消息)(通过spring-mvc和Spring boots并使用jackson序列化东西) 为了与遗留系统通信,我创建了一个自定义XmlMapper、序列化器和反序列化器。 最后,我创建了一个httpclientconf

  • 我对标准AlertDialog的外观很满意。有一个“是”按钮,也有一个“不是”按钮。 然而,我希望我的AlertDialog也有一个与侦听器的切换。据我所知,我需要创建自己的自定义AlertDialog来实现这一点。 我的问题是我能找到标准AlertDialog及其按钮的XML文件吗? 编辑:我知道如何创建一个自定义警报对话框。我正在寻找标准警报对话框的XML。以便我可以用它作为模板构建自定义警报

  • 我一直在努力使我的警告对话框圆角,但不知何故,我不能。我试过了,但失败了。我试着关注这个博客http://blog.stylingandroid.com/archives/271并以此为基础制作了我的风格。 顺便说一句,现在补充我的问题。我的一些新发现。上面链接中的代码在2.3.3(GB)上运行良好,但在ICS中根本不起作用。一些改变使代码中断。 我想避免创建9个补丁图像,因此我使用形状。9补丁图

  • 问题内容: 这是来自JS新手的两部分问题。 因此,我正在尝试遵循Thomas Davis的教程,使用requireJS创建一个主干应用程序。 如何通过对以XML提供数据的服务器的ajax调用来创建Backbone集合?collections.fetch()似乎期望使用JSON后端。 在尝试某些事情时,我得到了以下代码,其中在Ajax成功回调中填充集合“ bookStore”时页面没有刷新。 这是我

  • 问题内容: 我试图生成以下格式的xml: 我的查询如下: 我的查询没有完全产生记录标签,目前是 应该是 我尝试了所有可能性,但没有获得标签。谁能帮我解决这个问题。 问题答案: 我无法从xml显式获得预期的输出,相反,我使用了xml路径并获得了输出。这是我更新的查询 欢迎您发布明确使用xml的修复程序。