Пользовательское оповещение Android с XML - действие нажатия кнопки

У меня есть 2 файла макета, один для отображения основного макета (activity_main.xml), а другой для отображения пользовательских диалогов (dialog_custom.xml). Эти 2 файла следующие:

activity_main.xml

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

        <Button android:id="@+id/btn_1_option"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Show Alert with 1 Button"
            android:padding="10dip"
            android:layout_marginTop="40dip">
        </Button>

        <Button android:id="@+id/btn_2_option"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Show Alert With 2 Buttons"
            android:padding="10dip">
        </Button>

        <Button android:id="@+id/btn_3_option"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Show Alert with 3 Buttons"
            android:padding="10dip">
        </Button>

        <Button android:id="@+id/btn_custom_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Show Alert with Custom Layout - From XML"
            android:padding="10dip">
        </Button>

    </LinearLayout>

dialog_custom.xml

    <?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="wrap_content">

        <TextView
            android:id="@+id/dialog_info"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:background="@android:color/holo_orange_dark"
            android:text="@string/dialog_text"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_below="@id/dialog_info">

            <Button
                android:id="@+id/dialog_cancel"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.50"
                android:background="#3333"
                android:text="Cancel"/>

            <Button
                android:id="@+id/dialog_ok"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.50"
                android:background="#888888"
                android:text="Agree"/>
        </LinearLayout>
    </RelativeLayout>

И что я сделал в Главном классе -

    public class Activity_Main extends Activity
    {
        Context context = Activity_Main.this;
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            final Dialog dialog = new Dialog(context);
            dialog.setContentView(R.layout.dialog_main);
            dialog.setTitle(R.string.dialog_title);
            dialog.show();
        }
    }

Итак, я получаю диалог, как это-

Выход

Теперь я хочу добавить опцию щелчка для этой кнопки ОТМЕНА и СОГЛАСОВАТЬ. Но если я хочу, меня заставляют закрыться. Может кто-нибудь, пожалуйста, помогите мне, как я могу это сделать?

Спасибо за помощь.

3 ответа

Решение

Сделайте это следующим образом:

final Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.layout.dialog_main);
Button btCancel = (Button) dialog.findViewById(R.id.dialog_cancel);
Button btOk = (Button) dialog.findViewById(R.id.dialog_ok);
btCancel.setOnClickListener(new View.OnClickListener() {
 @Override
   public void onClick(View v) {
   //Cancel Click

   }
});
btOk.setOnClickListener(new View.OnClickListener() {
 @Override
  public void onClick(View v) {
  //OK CLICK      

  }
});
dialog.show();

Если вы хотите добавить Buttons или любой Widget (внутри Dialog) убедитесь, что вы находите вид с dialog.findViewById(R.id.ID_WIDGET) в противном случае он потерпит крах.

Я не смог найти ваш код клика, чтобы отменить и согласиться, но попробуйте это:

 Button cancel=(Button)dialog.findViewById(R.id.dialog_cancel);
cancel.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
//              do your work

            }
        });

Спасибо, если проблема не исчезнет, ​​тогда опубликуйте свою ошибку и нажмите на код

Вам может понадобиться добавить View.OnClickListener на кнопки диалога.

Button btnCancel = (Button) dialog.findViewById(R.id.dialog_cancel);
Button btnOk = (Button) dialog.findViewById(R.id.dialog_ok);
btnCancel.setOnClickListener(new View.OnClickListener() {
 @Override
   public void onClick(View v) {
   //Called on click of Cancel button
   }
});
btnOk.setOnClickListener(new View.OnClickListener() {
 @Override
  public void onClick(View v) {
   //Called on click of Cancel button    
  }
});
dialog.show();
Другие вопросы по тегам