2017-04-13 4 views
0

je crée une boîte de dialogue comme celui-ci:Comment ouvrir une boîte de dialogue Fragment on click?

Mon dialogue Fragment:

package com.aaron.waller.mrpolitik; 

import android.app.Activity; 
import android.app.Dialog; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.widget.ImageButton; 

public class extendsDialog extends Dialog implements 
     android.view.View.OnClickListener { 

    public Activity c; 
    public Dialog d; 
    public ImageButton yes, no; 

    public extendsDialog(Activity a) { 
     super(a); 
     // TODO Auto-generated constructor stub 
     this.c = a; 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.custom_dialog); 
     yes = (ImageButton) findViewById(R.id.btn_yes); 
     no = (ImageButton) findViewById(R.id.btn_no); 
     yes.setOnClickListener(this); 
     no.setOnClickListener(this); 
    } 



    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.btn_yes: 
       break; 
      case R.id.btn_no: 
       break; 
      default: 
       break; 
     } 
     dismiss(); 
    } 



} 

Maintenant, je veux que si je clique sur « btn_yes » qu'un fragment ouvre. Je l'ai essayé comme ça:

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.btn_yes: 
        FragmentManager fm = c.getFragmentManager(); 
        FragmentTransaction ft = fm.beginTransaction(); 
        ft.replace(R.id.parteienlayout, new SPD()); 
        ft.addToBackStack("Tag"); 
        ft.commit(); 
        break; 
     case R.id.btn_no: 
      break; 
     default: 
      break; 
    } 
    dismiss(); 
} 

Mais il dit "mauvais 2 type d'argument "nouveau SPD""

J'ai essayé aussi de mettre dans mon MainActivity.java:

public void tocdu(){ 
     FragmentManager fm = getSupportFragmentManager(); 
     FragmentTransaction ft = fm.beginTransaction(); 
     ft.replace(R.id.customdialog, new CDU()); 
     ft.addToBackStack("Tag"); 
     ft.commit(); 
} 

et ce sur la boîte de dialogue cliquez sur:

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.btn_yes: 
      ((MainActivity)getContext()).tocdu(); 
      break; 
     case R.id.btn_no: 
      break; 
     default: 
      break; 
    } 
    dismiss(); 
} 

mais son ne fonctionne toujours pas. Comment puis-je réaliser cela?

Répondre

0

Dans votre SPD.class

public class SPD extends Fragment {} 

Assurez-vous d'importer le package suivant:

import android.app.Fragment; 

l'idée est que si vous utilisez getSupportFragmentManager()

puis utilisez: import android.support.v4.app.Fragment; dans votre appelé framgent

ou si vous utilisez 01 Vous devez utiliser: import android.app.Fragment;