2016-01-28 2 views
1

Я продолжаю ошибочно вводить ошибку второго аргумента в этом коде @ ft.replace (..., фрагмент). Я не уверен, что случилось, и был бы признателен за любую помощь.Android Fragment Transaction .replace wrong 2-й аргумент

package valdes.listone; 

import android.app.FragmentTransaction; 
import android.os.Bundle; 
import android.app.Activity; 

public class MainActivity extends Activity implements GroceryListFragment.GroceryListListener{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

} 

@Override 
public void itemClicked(long id){ 
    //GroceryListListener 
    GroceryDetailFragment fragment = new GroceryDetailFragment(); 
    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    fragment.setListId(id); 
    ft.replace(R.id.fragmentContainer, fragment); //error is here. 
    ft.addToBackStack(null); 
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
    ft.commit(); 
} 

}

+0

Вы можете добавить свой Logcat для получения дополнительной информации –

+0

Является ли ваш класс GroceryDetailFragment расширением класса фрагментов? –

+0

Удостоверьтесь, что GroceryDetailFragment и FragmentTransaction имеют тот же импорт как android.support.v4.app, либо android.app –

ответ

2

Вы расширяете android.support.v4.app.Fragment в вашем GroceryDetailFragment Фрагмент. И вы используете getFragmentManager(), который возвращает FragmentManager, который поддерживает класс android.app.Fragment.

Чтобы получить код, действуйте в поле android.app.Fragment в вашем классе GroceryDetailFragment или используйте метод getSupportFragmentManager(), который поддерживает android.support.v4.app.Fragment, и вам хорошо идти.

android.supportv4.app.Fragment класс используется для поддержки версии для Android до android 3.0.

Чтобы узнать больше о фрагменте, читайте эту ссылку Fragment.

+0

Вот и все. Спасибо. – Diego