2017-04-13 2 views
0

habe ich ein Dialogfeld wie folgt aus:Wie öffne ich ein Fragment bei einem Dialogklick?

My Dialog 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(); 
    } 



} 

Jetzt, wo ich will, wenn ich auf "btn_yes" klicken, dass ein Fragment öffnet. Ich habe versucht, es wie folgt aus:

@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(); 
} 

Aber dann heißt es "falsch 2. Argument Typ "neue SPD""

Ich habe auch versucht, dies in meinem MainActivity.java zu setzen:

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

und dies auf Dialogfeld klicken:

@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(); 
} 

aber es funktioniert immer noch nicht. Wie kann ich das erreichen?

Antwort

0

In Ihrem SPD.class

public class SPD extends Fragment {} 

Stellen Sie sicher, das folgende Paket zu importieren:

import android.app.Fragment; 

die Idee ist, wenn Sie getSupportFragmentManager()

dann verwenden verwenden: import android.support.v4.app.Fragment; in Ihrem genannt framgent

oder wenn Sie 01 verwenden

müssen Sie verwenden: import android.app.Fragment;

Verwandte Themen