L'extension de AlertDialogs dans Android (où trouver des exemples, comment obtenir le titre et les boutons)
J'ai été à la recherche d'un lot pour des exemples sur la façon de correctement étendre AlertDialogs et obtenir le comportement attendu, mais j'ai du mal à en trouver.
Docs sur google ne marche pas vraiment dire grand-chose non plus.
Oui, je sais que je peux utiliser un AlertDialog.Builder pour construire la plupart des communes de choses, mais pour certaines raisons, j'ai envie de créer mon propre AlertDialogs (j'ai un code que je veux contenues dans des fichiers java, pour une raison).
J'ai créé mon PausDialog.java (voir le code ci-dessous), il montre, mais je n'arrive pas à obtenir le titre ou à l'un des boutons (positif, négatif etc) à afficher dans la boîte de Dialogue. Voir cette photo:
Donc,
question 1: où puis-je trouver de bons, propres et des exemples utiles sur la façon de correctement étendre AlertDialogs et comment les utiliser par la suite
question 2: pourquoi ne puis-je pas voir le titre ou les boutons à l'aide de la coutume AlertDialog ci-dessous?
PausDialog.java
package Test;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Handler;
import android.os.SystemClock;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class PausDialog extends AlertDialog
{
protected PausDialog(Context context)
{
super(context, R.style.DialogTheme);
}
@Override
protected void onCreate(android.os.Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.paus);
WindowManager.LayoutParams params = getWindow().getAttributes();
params.gravity = Gravity.TOP;
final EditText ed1= (EditText) findViewById(R.id.editTextPausArea);
final EditText ed2= (EditText) findViewById(R.id.EditTextPausTimeFrom);
final EditText ed3= (EditText) findViewById(R.id.EditTextPausTimeTo);
TextView tv1 = (TextView)findViewById(R.id.textViewPausArea);
tv1.setText(LanguageHandler.GetString("AREA"));
tv1 = (TextView)findViewById(R.id.textViewPausTime);
tv1.setText(LanguageHandler.GetString("TIME"));
setButton(DialogInterface.BUTTON_POSITIVE, "Positive",
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
int fromArea = 0;
int fromTime = 0;
int toTime = 0;
try
{
fromArea = Integer.parseInt(ed1.getText().toString());
fromTime = Integer.parseInt(ed2.getText().toString());
toTime = Integer.parseInt(ed3.getText().toString());
}
catch(Exception e)
{
//TODO fail
}
}
});
setButton(DialogInterface.BUTTON_NEGATIVE, "Negative",
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Do something
}
});
}
}
MainActivity.java, l'appel de la PausDialog:
PausDialog pd = new PausDialog(MainActivity.this);
pd.show();
La mise en page de mon PausDialog, paus.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:weightSum="1">
<RelativeLayout android:gravity="top" android:layout_height="200dp" android:layout_weight="0.11" android:layout_width="304dp">
<TextView android:layout_alignParentLeft="true" android:text="Område" android:layout_width="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:id="@+id/textViewPausArea" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginLeft="17dp" android:layout_marginTop="18dp"></TextView>
<EditText android:layout_alignBaseline="@+id/textViewPausArea" android:id="@+id/editTextPausArea" android:layout_width="80dp" android:layout_alignBottom="@+id/textViewPausArea" android:inputType="number" android:layout_height="wrap_content" android:layout_toRightOf="@+id/textViewPausArea" android:layout_marginLeft="17dp">
<requestFocus></requestFocus>
</EditText>
<TextView android:text="Tid" android:layout_width="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_below="@+id/editTextPausArea" android:id="@+id/textViewPausTime" android:layout_height="wrap_content" android:layout_marginTop="30dp" android:layout_alignLeft="@+id/textViewPausArea"></TextView>
<EditText android:layout_alignBaseline="@+id/textViewPausTime" android:id="@+id/EditTextPausTimeFrom" android:layout_width="80dp" android:layout_alignBottom="@+id/textViewPausTime" android:inputType="time" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editTextPausArea"></EditText>
<TextView android:text=" - " android:layout_width="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:id="@+id/textView3" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/EditTextPausTimeFrom" android:layout_alignBottom="@+id/EditTextPausTimeFrom" android:layout_toRightOf="@+id/EditTextPausTimeFrom"></TextView>
<EditText android:id="@+id/EditTextPausTimeTo" android:layout_width="80dp" android:inputType="time" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView3" android:layout_alignBottom="@+id/textView3" android:layout_toRightOf="@+id/textView3"></EditText>
</RelativeLayout>
</LinearLayout>
OriginalL'auteur Ted | 2011-10-19
Vous devez vous connecter pour publier un commentaire.
Il y a peu d'options pour créer des AlertDialog. J'aimerais juste vous donner la réponse pour la question en cours. Vous pouvez définir le titre, le message et d'autres composants de AlertDialog dans
onCreate()
méthode. Mais assurez-vous de le faire avant de vous appelersuper.onCreate()
Exemple:OriginalL'auteur Djek-Grif
J'ai réussi à faire mon propre
AlertDialog
par l'extension de laBuilder
classe.Puis, à partir du code, j'instancie comme ceci:
Le seul inconvénient est que vous devez prendre soin de renvoyer le dialogue correctement sur le changement d'orientation ou d'autres événements qui ne sont pas d'appel explicite à la rejeter() la méthode, comme le bouton "retour" ou quelque chose d'autre. Sinon, vous aurez des fuites de mémoire à partir de cette boîte de dialogue.
OriginalL'auteur Poly Bug
J'ai obtenu mon personnalisée AlertDialog de travail à l'aide de quelque chose de semblable à ce code.
D'abord faire votre constructeur accessible au public
Alors il suffit d'instancier et de le présenter de la manière suivante:
OriginalL'auteur Frank Leigh