web-dev-qa-db-ja.com

フラグメント内のメソッド 'getSupportFragmentManager()'を解決できません

メソッド 'getSupportFragmentManager()'を解決できないというメッセージが見つかりました。アクティビティとしてフラグメント化します。タブスワイプでマップを使用するためです。

public class PETAcikarangsukatani extends Fragment {
Context context;

private static final LatLng SUKATANI = new LatLng(-6.171327, 107.178108);
private static final LatLng WRPOJOK = new LatLng(-6.222411, 107.162158);
private static final LatLng PILAR = new LatLng(-6.257033, 107.156472);
private static final LatLng CIKARANG = new LatLng(-6.256073, 107.143984);


GoogleMap googleMap;
final String TAG = "PathGoogleMapActivity";

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.activity_path_google_map, container, false);
    context = rootView.getContext();

    SupportMapFragment fm = (SupportMapFragment)getSupportFragmentManager()
            .findFragmentById(R.id.map);
    googleMap = fm.getMap();
41
Irwans

Fragmentサブクラス内では、getFragmentManagerの代わりにgetSupportFragmentManagerを使用する必要があります。インポートがサポートライブラリからのものである場合、サポート1を取得します。

68
Blackbelt

私の場合、Fragmentクラスがからインポートされることを確認しました

Android.support.v4.app.Fragment

からではない

Android.app.Fragment

それから私は使用しました

getActivity()。getSupportFragmentManager();

そして今、その働き。 onAttach()で取得したアクティビティインスタンスを使用しても動作しません。

44
Md Sufi Khan

Activityの代わりにFragmentActivityを拡張

30
Vicky

API 21で作業している場合はgetSupportFragmentManager()getFragmentManager()に置き換えます。またはアプリがAndroidのバージョンをサポートしている場合3.0よりも古い場合は、Androidプロジェクトをサポートライブラリで設定し、ライブラリを使用するようにプロジェクトを設定し、今回はgetSupportFragmentManager()を使用してください。

13
Aman

getActivity().getSupportFragmentManager()を使用

12
Gabriel Wamunyu

また、アクティビティの代わりにAppCompatActivityを使用できます。
その後、getSupportFragmentManager()が機能します。
また、この場合、AppテーマをAppCompatテーマに拡張することも忘れないでください

6
Leo Droidcoder

ドキュメントによると、getSupportFragmentManager()はAppCompatActivityクラス内にのみ存在します。 Activityクラス内には存在しません。クラスがAppCompatActivityクラスを拡張していることを確認してください。

public class MainActivity extends AppCompatActivity {
}
5
Siddarth Kanted

getFragmentManager()

私の場合はこれでうまくいきました

3
Venkat Vinay

あなたは使うべきです

getActivity.getSupportFragmentManager() like
//in my fragment 
SupportMapFragment fm = (SupportMapFragment)    
getActivity().getSupportFragmentManager().findFragmentById(R.id.map);

この問題もありますが、getSupportFragmentManagerの前にgetActivity()を追加すると解決しました。

2
Sazid Ali

getSupportFragmentManager()Fragmentの一部ではないため、そのように取得することはできません。あなたはそれを親から取得することができますActivity(だからonAttach()で最も早い)normal

activity.getSupportFragmentManager();

または、 getChildFragmentManager() を試すことができます。これはフラグメントの範囲内ですが、API17 +が必要です

2
Marcin Orlowski

「メソッドgetSupportFragmentManager()を解決できません」を取得している場合は、使用してみてください

this.getSupportFragmentManager()

AndroidでDialogFragmentsを処理するときに機能します

1
Jay Lin

Android.support.v4.app.Fragmentクラスをインスタンス化する場合は、getActivity().getSupportFragmentManager()を呼び出して、解決できない問題を取り除く必要があります。ただし、Fragment by Googleの公式Androidドキュメントでは、この単純な問題を見落とす傾向があり、getActivity()プレフィックスなしでドキュメント化されています。

1

上記のすべてを試しましたが、動作するものはありません

最後にこれを自分で試した

getBaseActivity().getFragmentManager()

そして働いている.. :)

私にとっては、次のようにv4をインポートするようにしました。

import Android.support.v4.app.DialogFragment;

次に使用:

getActivity().getFragmentManager()
0
Marc Alexander