![](/img/trans.png)
[英]How to update Textview of an DialogFragment from another Fragment
[英]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.