2012-11-01 51 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; 
    } 
} 
相關問題