19a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen/* 29a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * Copyright 2018 The Android Open Source Project 39a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * 49a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * Licensed under the Apache License, Version 2.0 (the "License"); 59a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * you may not use this file except in compliance with the License. 69a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * You may obtain a copy of the License at 79a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * 89a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * http://www.apache.org/licenses/LICENSE-2.0 99a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * 109a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * Unless required by applicable law or agreed to in writing, software 119a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * distributed under the License is distributed on an "AS IS" BASIS, 129a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * See the License for the specific language governing permissions and 149a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * limitations under the License. 159a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen */ 169a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen 179a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chenpackage com.example.androidx.car; 189a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen 199a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chenimport android.app.Dialog; 209a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chenimport android.content.Context; 219a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chenimport android.os.Bundle; 229a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chenimport android.widget.CheckBox; 239a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen 249a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chenimport androidx.car.app.CarAlertDialog; 259a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chenimport androidx.fragment.app.DialogFragment; 269a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chenimport androidx.fragment.app.FragmentActivity; 279a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen 289a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen/** 299a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * A demo activity that will display a {@link CarAlertDialog} with configurable options for what is 309a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen * in the contents of that resulting dialog. 319a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen */ 329a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chenpublic class CarAlertDialogDemo extends FragmentActivity { 339a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen private static final String DIALOG_TAG = "alert_dialog_tag"; 349a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen 359a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen @Override 369a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen protected void onCreate(Bundle savedInstanceState) { 379a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen super.onCreate(savedInstanceState); 389a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen setContentView(R.layout.alert_dialog_activity); 399a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen 409a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen CheckBox hasTitleView = findViewById(R.id.has_title); 419a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen CheckBox hasBodyText = findViewById(R.id.has_body_text); 4203a1642ce34e4a32c650cd7892ba9805b0dfe32eAnthony Chen CheckBox hasSingleLineBody = findViewById(R.id.has_single_line_body); 439a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen CheckBox hasAction1 = findViewById(R.id.has_action_1); 449a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen CheckBox hasAction2 = findViewById(R.id.has_action_2); 459a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen 469a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen findViewById(R.id.create_dialog).setOnClickListener(v -> { 479a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen AlertDialogFragment alertDialog = AlertDialogFragment.newInstance( 489a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen hasTitleView.isChecked(), 499a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen hasBodyText.isChecked(), 5003a1642ce34e4a32c650cd7892ba9805b0dfe32eAnthony Chen hasSingleLineBody.isChecked(), 519a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen hasAction1.isChecked(), 529a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen hasAction2.isChecked()); 539a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen 549a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen alertDialog.show(getSupportFragmentManager(), DIALOG_TAG); 559a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen }); 569a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen } 579a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen 589a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen /** A {@link DialogFragment} that will inflate a {@link CarAlertDialog}. */ 599a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen public static class AlertDialogFragment extends DialogFragment { 609a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen private static final String HAS_TITLE_KEY = "has_title_key"; 619a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen private static final String HAS_BODY_KEY = "has_body_key"; 6203a1642ce34e4a32c650cd7892ba9805b0dfe32eAnthony Chen private static final String HAS_SINGLE_LINE_BODY_KEY = "has_single_line_body_key"; 639a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen private static final String HAS_ACTION_1_KEY = "has_action_1_key"; 649a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen private static final String HAS_ACTION_2_KEY = "has_action_2_key"; 659a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen 669a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen static AlertDialogFragment newInstance(boolean hasTitle, 6703a1642ce34e4a32c650cd7892ba9805b0dfe32eAnthony Chen boolean hasBody, boolean hasSingleLineBody, boolean hasAction1, 6803a1642ce34e4a32c650cd7892ba9805b0dfe32eAnthony Chen boolean hasAction2) { 699a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen Bundle args = new Bundle(); 709a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen args.putBoolean(HAS_TITLE_KEY, hasTitle); 719a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen args.putBoolean(HAS_BODY_KEY, hasBody); 7203a1642ce34e4a32c650cd7892ba9805b0dfe32eAnthony Chen args.putBoolean(HAS_SINGLE_LINE_BODY_KEY, hasSingleLineBody); 739a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen args.putBoolean(HAS_ACTION_1_KEY, hasAction1); 749a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen args.putBoolean(HAS_ACTION_2_KEY, hasAction2); 759a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen 769a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen AlertDialogFragment fragment = new AlertDialogFragment(); 779a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen fragment.setArguments(args); 789a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen return fragment; 799a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen } 809a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen 819a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen @Override 829a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen public Dialog onCreateDialog(Bundle savedInstanceState) { 839a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen Context context = getContext(); 849a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen Bundle args = getArguments(); 859a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen CarAlertDialog.Builder builder = new CarAlertDialog.Builder(context); 869a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen 879a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen if (args.getBoolean(HAS_TITLE_KEY)) { 889a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen builder.setTitle(context.getString(R.string.alert_dialog_title)); 899a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen } 909a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen 919a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen if (args.getBoolean(HAS_BODY_KEY)) { 929a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen builder.setBody(context.getString(R.string.alert_dialog_body)); 939a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen } 949a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen 9503a1642ce34e4a32c650cd7892ba9805b0dfe32eAnthony Chen if (args.getBoolean(HAS_SINGLE_LINE_BODY_KEY)) { 9603a1642ce34e4a32c650cd7892ba9805b0dfe32eAnthony Chen builder.setBody(context.getString(R.string.alert_dialog_body_single_line)); 9703a1642ce34e4a32c650cd7892ba9805b0dfe32eAnthony Chen } 9803a1642ce34e4a32c650cd7892ba9805b0dfe32eAnthony Chen 999a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen if (args.getBoolean(HAS_ACTION_1_KEY)) { 1009a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen builder.setPositiveButton(context.getString(R.string.alert_dialog_action1), 1019a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen /* listener= */ null); 1029a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen } 1039a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen 1049a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen if (args.getBoolean(HAS_ACTION_2_KEY)) { 1059a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen builder.setNegativeButton(context.getString(R.string.alert_dialog_action2), 1069a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen /* listener= */ null); 1079a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen } 1089a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen 1099a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen return builder.create(); 1109a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen } 1119a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen } 1129a3a7c9092bc661482d9bbf28c21a3ff7d9b85c1Anthony Chen} 113