2017-05-15 21 views
1

私はこのコードに問題があります。 android.support.v4.app.Fragmentまたはandroid.app.Fragmentを使用します。エラー:(31,40)エラー:互換性のないタイプ:android.support.v4.app.Fragmentをandroid.appに変換できません。フラグメント

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

参照して下さい[これ](http://stackoverflow.com/a/ 15109122/5460053)、 'android.support.v4.app.Fragment'と' android.app.Fragment'の違いを知ることができます –

答えて

2

は全体のアプリでそれらのいずれかを使用し、android.app.Fragmentandroid.support.v4.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(); 
} 

OR

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; 

アンドロイドライブラリ輸入:

import android.app.Fragment; 
import android.app.FragmentManager; 
import android.app.FragmentTransaction; 
関連する問題