2012-11-01 46 views
30

我得到一个错误我得到一个错误“的方法秀(FragmentManager,字符串)”

的方法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; 
    } 
} 

回答

46

当您使用android.support.v4.app.DialogFragment时,您应该将android.support.v4.app.FragmentManager的实例传递给show(),可以使用getSupportFragmentManager()调用来查询该实例。希望这可以帮助。

+1

不,我也在使用它。但仍然有问题。 – Vinuthan

+0

还有一个问题,即使在添加支持api后,我的应用程序仍然看起来不像4.0版本的应用程序。仍然看起来像我的手机有姜饼。还有什么我需要做的? – Vinuthan

+0

@ user1767451,支持库旨在让开发人员在较旧的Android版本上使用新的API,而不是使所有API版本上的应用程序看起来都一样。 – Egor

8

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

那么你应该叫getSupportFragmentManager()但不getFragmentManager()

+1

谢谢我的作品 –

27

的问题是,因为你需要使用支持包的FragmentManager,但您使用的是原生FragmentManager当你调用getFragmentManager()。尝试在初始化变量时调用getSupportFragmentManager()fm

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

你可以做到这一点通过导入,

import android.support.v4.app.DialogFragment; 
+0

谢谢,帮助! –

18

即使我在运行姜饼代码时有同样的问题。但对ICS工作正常。解决的办法是,

的这个代替:

public class MainActivity extends Activity { 
} 

使用扩展FragmentActivty

public class MainActivity extends FragmentActivity { 
} 
+0

这是我的解决方案!谢谢! –

3

即使我没有使用android.support.v4.app.DialogFragment打开DialogFragment当我得到这个。我不得不打电话getActivity().getFragmentManager(),因为getSupportFragmentManager()没有工作。

2
public void onClick(View v) { 

    switch (v.getId()) { 
    case R.id.btnselectDate: 
     DialogFragment newFragment = new DatePickerFragment(); 
     newFragment.show(this.getFragmentManager(), "datePicker"); 
     break; 

     default: 
     break; 
    } 
} 
相关问题