2016-05-19 12 views
1

私が作成している別のフラグメントでメインアクティビティのフレームビューを変更しようとしています。フラグメントと継承

マイonNavigationItemSelected:

import android.app.Fragment; 
import android.app.FragmentManager; 
import android.content.Context; 
import android.content.SharedPreferences; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.graphics.Paint; 
import android.graphics.PorterDuff; 
import android.graphics.PorterDuffXfermode; 
import android.graphics.Rect; 
import android.graphics.RectF; 
import android.media.Image; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.util.Base64; 
import android.view.View; 
import android.support.design.widget.NavigationView; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.ImageView; 
import android.widget.TextView; 

public boolean onNavigationItemSelected(MenuItem item) { 
    Fragment fragment; 
    FragmentManager fragmentManager = getFragmentManager(); 

    int id = item.getItemId(); 

    if (id == R.id.nav_camara) { 
     // Handle the camera action 
    } else if (id == R.id.nav_gallery) { 

    } else if (id == R.id.nav_slideshow) { 
     fragment = new FragmentOne(); 

    } else if (id == R.id.nav_manage) { 
     fragment = new FragmentTwo(); 
    } else if (id == R.id.nav_share) { 

    } else if (id == R.id.nav_send) { 

    } 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 

と私のフラグメントである:

package com.example.tombushmits.pilot; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import com.example.tombushmits.pilot.R; 

public class FragmentOne extends Fragment { 

    public FragmentOne(){} 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup   container, 
          Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.fragment1, container, false); 
    } 
} 


package com.example.tombushmits.pilot; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

import com.example.tombushmits.pilot.R; 

public class FragmentTwo extends Fragment { 

public FragmentTwo(){} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.fragment2, container, false); 
} 
} 

が、私はエラーを取得しています:

Error:(116, 26) error: incompatible types required: Fragment found:
FragmentOne

+0

上に示されているように、コードを更新します。 importステートメントを見てみると、android.app.Fragmentを使用していても、もう一方はandroid.support.v4.app.Fragmentを使用している可能性があります。 – Dave

+0

^合意、あなたの活動に輸入品を含めることができますか? – Patrick

+0

こんにちは、コード編集 – Tomb

答えて

0

あなたFragmentOneandroid.support.v4.app.Fragmentを拡張します。 MainActivityでは、クラスで動作するgetFragmentManager()を使用しています。 FragmentOneandroid.app.Fragmentから継承するか、をMainActivityの内部で使用する必要があります。

0
int id = item.getItemId(); 

if (id == R.id.nav_camara) { 
    // Handle the camera action 
} else if (id == R.id.nav_gallery) { 

} else if (id == R.id.nav_slideshow) { 
    fragment = new FragmentOne(); 

} else if (id == R.id.nav_manage) { 
    fragment = new FragmentOne(); 
} else if (id == R.id.nav_share) { 

} else if (id == R.id.nav_send) { 

} 

ここでは、「FragmentTwo」を使用しようとしていたが、それはありませんので、私はあなたが同じフラグメントのクラスを使用していることを確認し

+0

申し訳ありません、コード編集済み – Tomb