我在这段代码中遇到问题,我不知道应该使用哪一个android.support.v4.app.Fragment或android.app.Fragment;
public class MainActivity extends AppCompatActivity {
private SharedPreferences pref;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pref = getPreferences(0);
initFragment();
}
private void initFragment(){
android.support.v4.app.Fragment fragment;
if(pref.getBoolean(Constants.IS_LOGGED_IN,false)){
fragment = new ProfileFragment();
}else {
fragment = new LoginFragment();
}
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.fragment_frame,fragment);
ft.commit();
}
}
答案 0 :(得分:2)
不要将 android.support.v4.app.Fragment 与 android.app.Fragment 不匹配,在整个应用中使用其中任何一个。
private void initFragment(){
android.support.v4.app.Fragment fragment;
if(pref.getBoolean(Constants.IS_LOGGED_IN,false)){
fragment = new ProfileFragment();
}else {
fragment = new LoginFragment();
}
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment_frame,fragment);
ft.commit();
}
或强>
private void initFragment(){
android.app.Fragment fragment;
if(pref.getBoolean(Constants.IS_LOGGED_IN,false)){
fragment = new ProfileFragment();
}else {
fragment = new LoginFragment();
}
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.fragment_frame,fragment);
ft.commit();
}
因此,如果您使用支持库,则使用getSupportFragmentManager()并支持其他与支持库相关的方法,否则对于Android应用程序片段的使用不使用支持库函数。它会产生“类型不匹配”的问题。 强烈建议这样做。
支持片段trasaction的库导入:
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
片段交易的Android库导入:
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;