我正在尝试在我的 Android 应用程序中应用新的 LifecycleFragment
:
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.fragmentContainer, new CustomBlockUrlProviderFragment());
fragmentTransaction.addToBackStack("manage_custom_url_providers");
fragmentTransaction.commit();
fragmentTransaction.replace(R.id.fragmentContainer, new CustomBlockUrlProviderFragment());
我在这一行遇到了错误。说第二个参数应该是 Fragment
。
如何让它发挥作用?
最佳答案
鉴于您的代码 fragment 的第一行,我猜您正在使用 android.app.FragmentManager
,而且您以前一直在使用原生 fragment (android.app.Fragment
)。 LifecycleFragment
继承自 fragments backport (android.support.v4.app.Fragment
),您不能在同一个 Activity 中混搭 native 和 backport fragment 。
不过,您可以创建自己的 LifecycleFragment
:
import android.app.Fragment;
import android.arch.lifecycle.Lifecycle;
import android.arch.lifecycle.LifecycleOwner;
import android.arch.lifecycle.LifecycleRegistry;
import android.os.Bundle;
import android.support.annotation.Nullable;
public class LifecycleFragment extends Fragment
implements LifecycleOwner {
private LifecycleRegistry registry=new LifecycleRegistry(this);
@Override
public Lifecycle getLifecycle() {
return(registry);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
registry.handleLifecycleEvent(Lifecycle.Event.ON_CREATE);
}
@Override
public void onStart() {
super.onStart();
registry.handleLifecycleEvent(Lifecycle.Event.ON_START);
}
@Override
public void onResume() {
super.onResume();
registry.handleLifecycleEvent(Lifecycle.Event.ON_RESUME);
}
@Override
public void onPause() {
super.onPause();
registry.handleLifecycleEvent(Lifecycle.Event.ON_PAUSE);
}
@Override
public void onStop() {
super.onStop();
registry.handleLifecycleEvent(Lifecycle.Event.ON_STOP);
}
@Override
public void onDestroy() {
super.onDestroy();
registry.handleLifecycleEvent(Lifecycle.Event.ON_DESTROY);
}
}
或者,切换到 fragment 反向端口(例如,FragmentActivity
/LifecycleActivity
/AppCompatActivity
,getSupportFragmentManager()
).
关于android - 新的 LifecycleFragment 组件和旧的 FragmentTransaction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44829423/