2017-01-24 16 views
0

私は本当に新しいアンドロイドの開発で、皆さんが私の問題で私を助けてくれることを願っています。私はすでに何か解決策を探していたが、どれもうまくいきませんでした。 私はスクロール可能なタブのための6つの断片を持っているし、各タブはカートに追加ボタンがあります、そのボタンをクリックすると、フラグメントダイアログが現れるはずです。私の場合、このエラーがあります。他のフラグメントからdialogfragmentを呼び出す方法は?

Error:(37, 13) error: no suitable method found for show(android.support.v4.app.FragmentManager,String) method DialogFragment.show(android.app.FragmentManager,String) is not applicable (argument mismatch; android.support.v4.app.FragmentManager cannot be converted to android.app.FragmentManager) method DialogFragment.show(FragmentTransaction,String) is not applicable (argument mismatch; android.support.v4.app.FragmentManager cannot be converted to FragmentTransaction)

私のコードは、フラグメントがDialogFragmentを呼び出すための方法です。エラーが途中でOneFragment.java

相続人は私の出力であるように

package info.androidhive.materialtabs.fragments; 

    import android.app.DialogFragment; 
    import android.os.Bundle; 
    import android.support.v4.app.Fragment; 
    import android.support.v4.app.FragmentActivity; 
    import android.support.v4.app.FragmentManager; 
    import android.support.v4.app.FragmentTransaction; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 

    import info.androidhive.materialtabs.R; 


public class OneFragment extends Fragment{ 

public OneFragment() { 
    // Required empty public constructor 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.fragment_one, container, false); 
} 

public void toDiagCartFragment(View v){ 
    FragmentManager manager = getFragmentManager(); 
    CartFragment cart = new CartFragment(); 
    cart.show(manager, "My Cart"); 
} 

} 

このOneFragment

package info.androidhive.materialtabs.fragments; 

    import android.app.DialogFragment; 
    import android.os.Bundle; 
    import android.support.annotation.Nullable; 
    import android.support.v4.app.Fragment; 
    import android.support.v4.app.FragmentActivity; 
    import android.support.v4.app.FragmentManager; 
    import android.support.v4.app.FragmentTransaction; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 

    import info.androidhive.materialtabs.R; 


public class CartFragment extends DialogFragment{ 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.fragment_cart2, null); 
} 
} 

によって呼び出されるDialogFragmentのコードがそうです。 This is the fragment to call the dialog

This is suppose to be the dialog

_Iは本当にただ.Iが本当にどのように行うのか分からない 私にいいことしてください、すべての答えを感謝しています。 :( 。お気軽に:)

+0

[DialogFragmentを別のDialogFragmentから表示する]の複製があります(https://stackoverflow.com/questions/16540186/show-dialogfragment-from-another-dialogfragment) – Taslim

答えて

0

あなたOneFragmentCartFragmentはそうではないライブラリーフラグメントをサポートするために属していると

FragmentManager manager = getFragmentManager(); 

を交換してください。ライブラリをサポートするにはCartFragmentを、デフォルトのフラグメントにはOneFragmentを変更する必要があります。ライブラリの断片をサポートするためにCartFragmentを修正することは、サポートライブラリがより多くの機能を持つようになるほど優れています。

+0

_ライブラリフラグメントをサポートするためにCartFragmentを変更する予定はありますか? –

+0

'import android.app.DialogFragment;を で置き換えてください' import android.support.v4.app.DialogFragment; '' CartFragment.java'で – Saurabh

0

あなたのエラーはあなたの答えをはっきりと示しています。

type mismatch

あなたdialogFragmentはandroid.app.FragmentManager持って、あなたはandroid.support.v4.app.FragmentManagerを呼んでいます。あなたは、これまでお使いのcartFragmentの輸入を交換getSupportFragmentManger()は、すべての最初のgetFragmentManager();

のinsted

import android.support.v4.app.DialogFragment; 

を使用して、このメソッドを作成する必要があります。

public static CartFragment newInstance() { 
     CartFragment dialog = new CartFragment(); 
     return dialog; 
    } 

このようにone_fragmentで使用します。

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();    
CartFragment newFragment = CartFragment .newInstance(); 
newFragment.show(ft, "My Cart"); 
0

バージョンの不一致があります。 getFragmentManager()を使用する代わりに、サポートライブラリバージョンのFragmentsを使用している場合と同様に、getSupportFragmentManager()を使用します。

FragmentManager manager = getSupportFragmentManager(); 
+0

_これを変更すると別のエラーに変わります エラー:(37、13)エラー:show(android.support.v4.app)に適切なメソッドが見つかりませんでした。FragmentManager、String) メソッドDialogFragment.show(android.app.FragmentManager、String)は適用されません (引数の不一致; android.support.v4.app.FragmentManagerはandroid.app.FragmentManagerに変換できません) メソッドDialogFragment.show (FragmentTransaction、String)は適用されません (引数の不一致; android.support.v4.app.FragmentManagerはFragmentTransactionに変換できません) –

関連する問題