Comment définir la mise en page d'un PopupWindow partir d'un fichier xml, lorsque PopupWindow méthode est appelée à partir d'une autre classe
Je voudrais être en mesure de définir la mise en page d'un PopupWindow partir d'un fichier xml lors de la PopupWindow méthode est appelée à partir d'une autre classe. Ci-dessous un code qui fonctionne en tant que besoin, SAUF que la mise en page est tirée de la java fichier et non le fichier xml.Je ne sais pas comment bien l'accès xml de mise en page et mise en œuvre dans le PopupWindow dans cette situation, ou si cela est possible. Conseils et suggestions sont appréciés. Merci.
showPopup.java
public class showPopup {
Context ctx;
Button btnDismiss;
public showPopup(Context ctx){
this.ctx = ctx;
}
public void onCreateView(LayoutInflater layoutInflater, ViewGroup container) {
View layout = layoutInflater.inflate(R.layout.popup_layout, null);
btnDismiss = (Button) layout.findViewById(R.id.btndismissxml);
}
public void goJoe(View parent){
final PopupWindow popup = new PopupWindow(ctx);
btnDismiss = new Button (ctx);
btnDismiss.setText("Text is from showPopup.java");
popup.setContentView(btnDismiss);
popup.setWidth(400);
popup.setHeight(580);
popup.showAtLocation(parent, Gravity.CENTER_HORIZONTAL, 10, 10);
btnDismiss.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popup.dismiss();
}
});
}
}
Tab3Fragment.java
public class Tab3Fragment extends Fragment implements OnClickListener{
Button btnPopup;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup containerGroup, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.tab3_fragment, containerGroup, false);
btnPopup = (Button)v.findViewById(R.id.btnPopupxml);
btnPopup.setOnClickListener(this);
return v;
}
//@Override
public void onViewCreated(View v) {
btnPopup = (Button)v.findViewById(R.id.btnPopupxml);
btnPopup.setOnClickListener(this);
}
@Override
public void onClick(View parent) {
new showPopup(getActivity().getApplicationContext()).goJoe(parent);
}
}
popup_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:id="@+id/layout">
<Button android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_width="wrap_content"
android:id="@+id/btndismissxml"
android:text="Text is from popup_layout.xml"></Button>
</RelativeLayout>
Mise À Jour (1835, Dec-11):
C'est un projet de popup. Il y aura plusieurs de ces entretien modifiables par l'utilisateur déroulante des champs dans l'application.
OriginalL'auteur portsample | 2014-12-10
Vous devez vous connecter pour publier un commentaire.
Changement
showPopup
comme ceSi vous voulez rejeter
popup
sur de toucher n'importe où dans l'écran, puis vous devez ajouter les lignes ci-aprèssetContentView
de popup et avantshowAtLocation
u n'avez pas initialiser ces
EditText
c'est pourquoi get NPE chk le modifier et de remplacer les codes avec une bonne id.u initialiser tous les domaine où u souhaitez utiliser dans Java code sinon u obtiendrez NPE.
qu'est-ce que
gfda
?Laissez-nous continuer cette discussion dans le chat.
OriginalL'auteur Kaushik
Vous pouvez essayer d'utiliser DialogFragment.
De l'API docs, Un fragment qui affiche une fenêtre de dialogue, flottant au-dessus de son activité de la fenêtre. Ce fragment contient une boîte de Dialogue objet, qui s'affiche comme fondée sur le fragment de l'état. Le contrôle de la boîte de dialogue (les décisions d'afficher, de masquer, de les rejeter) doit être fait par le biais de l'API ici, pas avec des appels directs sur la boîte de dialogue.
Implémentations devraient remplacer cette classe et de mettre en œuvre onCreateView(LayoutInflater, ViewGroup, Bundle) pour alimenter le contenu de la boîte de dialogue. Alternativement, ils peuvent remplacer onCreateDialog(Bundle) de créer une boîte de dialogue personnaliser, comme un AlertDialog, avec son propre contenu.
1.Créez votre propre popup de mise en page.
2.Créer dialogue personnalisée fragment.
3.Créer une interface pour le clic sur le bouton.
4.Appel sur votre fragment.
1.Créez votre propre popup de mise en page.
2.Créer dialogue personnalisée fragment.
3.Créer une interface pour le clic sur le bouton.
4.Mettre en œuvre sur votre fragment.
5.Heureux de codage.....
OriginalL'auteur Silambarasan Poonguti