如何在对话框单击时打开片段?

How do I open a Fragment on dialog click?

我创建了一个这样的对话框:

我的对话片段:

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



}

现在我希望,如果我单击 "btn_yes",就会打开一个片段。我是这样试过的:

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

但随后显示 "wrong 2nd argument type "new SPD""

我也试着把这个放在我的 MainActivity.java:

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

在对话框中单击此按钮:

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

但它仍然无法正常工作。 我怎样才能做到这一点?

在你的SPD.class

public class SPD extends Fragment {}

确保导入以下包:

import android.app.Fragment;

这个想法是如果你使用 getSupportFragmentManager()

然后在你调用的 framgent

中使用:import android.support.v4.app.Fragment;

或者如果您使用 getFragmentManager()

你必须使用:import android.app.Fragment;