簡體   English   中英

如何從另一個片段調用dialogfragment?

[英]How to call dialogfragment from another fragment?

我真的是android開發的新手,希望你們能為我解決問題。 我已經在尋找任何解決方案,但是都沒有用。 我有6個可滾動選項卡的片段,然后每個選項卡都有“添加到購物車”按鈕,如果單擊該按鈕,則會出現一個片段對話框。 就我而言,有這個錯誤。

錯誤:(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)

順便說一句,我的代碼是片段調用DialogFragment的方式。

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調用DialogFragment的代碼

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);
}
}

好像錯誤在OneFragment.java中

順便說一下,這是我的輸出。 這是調用對話框的片段

這應該是對話

_我真的很感謝您的回答,請對我好一點。我真的不知道該怎么做。 :( 。謝謝 :)

您的錯誤清楚地說明了您的答案。

類型不匹配

您的dialogFragment具有android.app.FragmentManager並且您正在調用android.support.v4.app.FragmentManager 您應該使用由getFragmentManager(); getSupportFragmentManger() getFragmentManager();

首先將您的cartFragment導入替換為此,

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");

版本不匹配。 在使用Fragments的支持庫版本時,請使用getSupportFragmentManager()而不是使用getFragmentManager()。

更換

FragmentManager manager = getFragmentManager();

FragmentManager manager = getSupportFragmentManager();

您的OneFragment屬於支持庫片段,而CartFragment不屬於。 您需要將CartFragment修改為支持庫,或者將OneFragment修改為默認的Fragment。 修改CartFragment以支持庫片段會更好,因為支持庫具有更多功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM