我收到错误"方法显示(FragmentManager,String)"

Vin*_*han 34 android

我收到了一个错误

show(FragmentManager, String)类型中的方法DialogFragment不适用于参数(FragmentManager, String)

package com.example.test1;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentActivity;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void click(View view) {
        DialogFragment newFragment = new FireMissilesDialogFragment();
        newFragment.show(getFragmentManager(), "missiles");
    }

    public boolean onCreateOtionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

Ego*_*gor 50

在您使用时android.support.v4.app.DialogFragment,您应该传递给可以使用呼叫查询show()的实例.希望这可以帮助.android.support.v4.app.FragmentManagergetSupportFragmentManager()

  • @ user1767451,实际上你的Activity类应该扩展FragmentActivity而不是简单的Activity来允许你使用Fragments. (5认同)

小智 30

问题是因为你需要使用支持包的FragmentManager,但是在调用getFragmentManager()时你正在使用本机FragmentManager.在初始化变量fm时尝试调用getSupportFragmentManager()

您还必须确保从支持包中包含DialogFragment,而不是从本机包中包含.

你可以通过导入,

import android.support.v4.app.DialogFragment;
Run Code Online (Sandbox Code Playgroud)


sur*_*udi 19

即使我在姜饼中运行代码时遇到了同样的问题.但对ICS工作正常.解决方案是,

而不是这个:

public class MainActivity extends Activity {
}
Run Code Online (Sandbox Code Playgroud)

使用extends FragmentActivty

public class MainActivity extends FragmentActivity {
}
Run Code Online (Sandbox Code Playgroud)


fay*_*lon 8

你应该使用android.support.v4.app.FragmentManager而不是android.app.FragmentManager.

然后你应该打电话getSupportFragmentManager()但不打电话getFragmentManager()