0

ボタンリスナー内のクリックでDialogFragmentオブジェクトを表示しようとしていました。

ダイアログを開始するアクティビティのコードは次のとおりです。

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

Button button1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    addListenerToButton1();
}

private void addListenerToButton1(){
    final Context context = this;


    button1 = (Button) findViewById(R.id.button1);

    button1.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {

            DP ciao = new DP();
            ciao.show(this,"MyDP");
        }
    });
}
}

ダイアログのコードは次のとおりです。

public class DP extends DialogFragment {

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    // Use the Builder class for convenient dialog construction
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

    builder.setMessage("Prova")
    .setPositiveButton("POS", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {

        }
    })
    .setNegativeButton("NEG", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {

        }
    });
    return builder.create();
}
}

エラーは次のとおりです。

  • タイプ DialogFragment のメソッド show(FragmentManager, String) は、引数 (MainActivity, String) には適用されません。

  • タイプ DialogFragment のメソッド show(FragmentManager, String) は、引数 (new View.OnClickListener(){}, String) には適用されません。

何かアドバイス?

4

3 に答える 3

2

アクティビティまたはボタン コンテキストを渡す代わりに、現在のアクティビティに関連付けられたフラグメントと対話するためのインスタンスをDialogFragment渡すことによって、アクティビティから表示します。FragmentManager

button1.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View arg0) {

        DialogFragment ciao = DP.newInstance();
        ciao.show(MainActivity.this.getFragmentManager(),"MyDP");
    }
});

また、 DialogFragment インスタンスを返す次のnewInstance()メソッドを DPに追加する必要があります。DialogFragment

public static DP newInstance() {
        DP frag = new DP();
        return frag;
    }
于 2013-05-08T16:47:42.817 に答える