2017-01-24 6 views
0

Я действительно новичок в развитии Android, надеюсь, что вы, ребята, можете мне помочь в моей проблеме. Я уже искал любое решение, но ничто из этого не работает. У меня есть 6 фрагментов для прокручиваемых вкладок, тогда на каждой вкладке есть кнопки ADD TO CART, если я нажму на эту кнопку, появится диалог фрагмента. В моем случае есть эта ошибка.Как вызвать диалог из другого фрагмента?

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)

Heres мой код, чтобы фрагмент вызывал 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"); 
} 

} 

Это код для DialogFragment называться по 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); 
} 
} 

Похоже ошибка в OneFragment.java

Heres мой вывод, кстати. This is the fragment to call the dialog

This is suppose to be the dialog

_I действительно ценят за любые ответы, только, пожалуйста, приятно мне .Я действительно не знаю, как это сделать. :( . Спасибо :)

+0

Возможный дубликат [Показать диалоговое окно из другого диалогового окна] (https://stackoverflow.com/questions/16540186/show-dialogfragment-from-another-dialogfragment) – Taslim

ответ

0

ваш OneFragment принадлежит поддержки библиотеки фрагмент, а CartFragment нет. вам необходимо либо изменить CartFragment на поддержку библиотеки, либо OneFragment по умолчанию. Фрагмент. и изменение CartFragment для поддержки фрагмента библиотеки будет лучше, поскольку библиотека поддержки имеет больше функциональности.

+0

_how я собираюсь изменить свой 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. Вы должны использовать getSupportFragmentManger() InstEd из getFragmentManager();

в первую очередь заменить импорт cartFragment на это,

import android.support.v4.app.DialogFragment; 

и создать этот метод.

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

и в вашем one_fragment используйте вот так.

0

Существует несоответствие версии. Вместо использования getFragmentManager() используйте getSupportFragmentManager(), поскольку вы используете версию библиотеки поддержки Fragments.

Заменить

FragmentManager manager = getFragmentManager(); 

с

FragmentManager manager = getSupportFragmentManager(); 
+0

_if Я изменяю его на это, он изменится на другую ошибку Ошибка: (37, 13) error: нет подходящего метода для показа (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) –

 Смежные вопросы

  • Нет связанных вопросов^_^