6

にコンパイルされません。私はこの作業を取得するために年齢のために試してみましたgetSupportFragmentManagerが、私はこの表示することができますどのようにDialogFragment

public class MyFragment extends Fragment 
    { 
     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
     { 

    ... 

      ImageView btnTags = (ImageView)view.findViewById(R.id.btnTags); 
      btnTags.setOnClickListener(new View.OnClickListener() 
      { 
       @Override 
       public void onClick(View view) 
       { 

        DialogFragment dlg = new TagsDialog(); 
        //this line doesn't compile 
        dlg.show(getSupportFragmentManager(), "tags"); 

       } 
      }); 
} 
} 

、しかし:ViewPager内部の私のFragment内側から

public class TagsDialog extends DialogFragment 
{ 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) 
    { 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     LayoutInflater inflater = getActivity().getLayoutInflater(); 
     builder.setView(inflater.inflate(R.layout.tags_dialog, null)); 
     builder.setMessage("This is a message").setTitle("TAGS"); 
     return builder.create(); 
    } 
} 

getSupportFragmentManager決して解決されない...任意のアイデア?

編集:私はサポートライブラリからViewPagerを使用していて、私はこれがすべてandroid.app.FragmentManager対サポートFragmentManagerによって引き起こされていると感じ

、しかし私は、この問題を解決する方法がわかりません...

getSupportFragmentManager /および関連するすべてのgetFragManagerメソッド(親や子など)は、showメソッドがコアを必要とする場合は常に、サポートライブラリからマネージャを返します。

輸入は以下のとおりです。

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 

FragmentManager fm = getActivity().getSupportFragmentManager(); // returns from support lib 
DialogFragment dlg = new TagsDialog(); 
dlg.show(fm, "tags"); // wants core... 

私はちょうどコアを使用する場合は、getSupportFragmentManager()あなたはあなたの輸入をダブルチェックする必要がありgetActivity() ...

+0

解決されていないとはどういう意味ですか?スタックトレースはありますか? – Snicolas

+0

@Snicolasコンパイルされません。あなたは赤い括れ線を知っています。 – sprocket12

+0

。どこ?どの行、ハイライト//犯人行 – Snicolas

答えて

12

に存在しません。サポートライブラリーのFragment & FragmentManagerとandroid core apisの組み合わせは使用できません。

サポートを使用する場合は、サポート(パッケージandroid.support.v4.app)のすべてを使用してください。そうでない場合は、core apiパッケージ(android.app)のすべてを使用してください。

+0

サポートライブラリのFragments&FragmentManagerも使用してください。 – Snicolas

+0

私の編集をご覧ください。 – sprocket12

+1

問題が解決しました。不一致は、私のDialogFragmentをサポートlibから作成することで解決されました。 – sprocket12

2

ここで私はViewPagerにある私のフラグメントで何をしていますか。 DialogFragmentを表示するコードはどこでも同じです。

FragmentManager fm = getActivity().getSupportFragmentManager(); 
ConfirmDeleteDialog dialog = new ConfirmDeleteDialog(); 
dialog.setTargetFragment(RecipeFragment.this, REQUEST_CONFIRM_RC); 
Bundle b = new Bundle(); 
b.putString(ConfirmDeleteDialog.EXTRA_CONFIRM_DIALOG_TYPE, 
     ConfirmDeleteDialog.CONFIRM_DIALOG_TYPE.COMMIT.name()); // enum determines what to display 
dialog.setArguments(b); 
dialog.show(fm, "confirm delete"); 

EDIT。

* getActivity()が不足している可能性があります。 * getSupportFragmentManager()

+0

getFragmentManagerはアクティビティから1を返しません。 javadocを参照してください。 – Snicolas

+0

次に、FragmentクラスとDialogFragmentクラスの両方がv4サポートライブラリのものであることを確認する必要があります。 (そしてFragmentManager) –

+0

あなたは私の答えをupvoteする必要があります;) – Snicolas

関連する問題