I want to create a alert dialog using a layout which is in a xml. I tried this:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
LayoutInflater inflater = getLayoutInflater();
View v = inflater.inflate(R.id.optionsmenu, null);
AlertDialog dialog = builder.setView(v).create();
dialog.show();
It does not work. optionsmenu is the layout that i want to use to create alert dialog. Can i set alert dialog view to this inner layout ?
here is the image's url . You can see the layout that i want to use.
I dont really know how you expect your dialog to look like but you should create it like this:
Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.activity_main);
dialog.setTitle("");
//to use a view inside the xml (i.e. a button)
Button button = (Button)dialog.findViewById(R.id.optionsmenu);
dialog.show();
Note that you were trying to inflate not the layout but the view (R.id.optionsmenu) it should have been (R.layout.activity_main)
alertDialog.builder is used to create a dialog without using a xml layout
Related
I'm creating a custom alert dialog
// Biuld the dialog
AlertDialog.Builder alert = new AlertDialog.Builder(this);
// Create the dialog
AlertDialog alertToShow = alert.create();
// Set keyboard to the dialog
alertToShow.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
// Add custom layout to the dialog
LayoutInflater inflater = this.getLayoutInflater();
View dialogView = inflater.inflate(R.layout.dialog_view, null);
alert.setView(dialogView);
// Show the dialog
alertToShow.show();
But the following line from above where I add my custom layout
f1.addView(inflater.inflate(R.layout.dialog_view, f1, false));
results in the error
Attempt to invoke virtual method 'void android.widget.FrameLayout.addView(android.view.View)' on a null object reference
Any idea how to fix the error?
You need to find the view after the dialog is displayed or after the layout is inflated. Not before
// Add custom layout to the dialog
LayoutInflater inflater = getLayoutInflater();
View dialogView = inflater.inflate(R.layout.dialog_view, f1, false)
FrameLayout f1 = (FrameLayout) dialogView.findViewById(android.R.id.custom);
f1.addView(dialogView);
// Show the dialog
alertToShow.show();
Though, I think you want alertToShow.setView(dialogView), maybe
I have to add views before I create the dialog
// Add custom layout to the dialog
LayoutInflater inflater = this.getLayoutInflater();
View dialogView = inflater.inflate(R.layout.dialog_view, null);
alert.setView(dialogView);
// Create the dialog
AlertDialog alertToShow = alert.create();
// Set keyboard to the dialog
alertToShow.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
// Show the dialog
alertToShow.show();
I have a AlertDialog.Builder in my Fragment Page and it shows three EditText (in a xml file).
Now I'd like to add a button at the top of the AlertDialog and on its click change the text of two of them.
It is like:
Button : Get coordinates
1st EdiText : latitude
2st EdiText : longitude
If you want a button added in xml file to be displayed in AlertDialog, just inflate the layout
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setCancelable(false);
builder.setView(layout);
where "layout" is inflated view
LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.activity_filename,null); // specify your xml layout here
then use "layout" to get id of the button
Button btn=(Button)layout.findViewById(R.id.getCoordBtn);
add click listener to it and perform whatever you want
Does anyone know how to customize items in AlertDialog when multi choice items are set with setMultiChoiceItems(...). I would like to change the text size for the items.
Thanks
Sure, you can use Dialog.setContentView() to set the content of a dialog to be an arbitrary layout.
Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.yourLayoutId);
dialog.show();
Make yourself a layout file with a components that you want in it and call setContentView on your dialog, passing the name of your layout file.
If you are deadset on AlertDialog you can do something similar with builder.setView()
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.yourLayoutId, (ViewGroup) findViewById(R.id.yourLayoutRoot));
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setView(layout);
AlertDialog alertDialog = builder.create();
alertDialog.show();
You can create a custom AlertDialog where you can change the text size of any element. A simple generic example: http://android-codes-examples.blogspot.in/2011/03/how-to-display-custom-dialog-and.html
I'm trying to find a way to create a popup screen for some user input which includes radio button, editText, button. I don't want to start a new activity.
what would be a good option? AlertDialog? Spinner?Popup menu?
Thanks
AlertDialog would be fine for this. You can declare a layout.xml file with all of the components you'll need and then inflate it and set it as the content of your dialog.
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.yourLayoutId, (ViewGroup) findViewById(R.id.yourLayoutRoot));
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setView(layout);
AlertDialog alertDialog = builder.create();
alertDialog.show();
I have a ListActivity which shows list of items. I prepared another layout for detailed view that contains items' name, address, phone number and image. I want to show these items detailed in a popup window if one is clicked without closing my ListActivity.
How can i do that?
You can use AlertDialog to do this. Look here http://developer.android.com/guide/topics/ui/dialogs.html. And scroll to Creating a Custom Dialog. Example is:
AlertDialog.Builder builder;
AlertDialog alertDialog;
Context mContext = getApplicationContext();
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.custom_dialog,
(ViewGroup) findViewById(R.id.layout_root));
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("Hello, this is a custom dialog!");
ImageView image = (ImageView) layout.findViewById(R.id.image);
image.setImageResource(R.drawable.android);
builder = new AlertDialog.Builder(mContext);
builder.setView(layout);
alertDialog = builder.create();
You can use a quickAction like the Twitter app or start a new Activity with android:theme="#android:style/Theme.Dialog" specified in your manifest.
Creating dialogs is described on this page: http://developer.android.com/guide/topics/ui/dialogs.html