2013-10-02 6 views
5

sto creando un'applicazione Android con la barra delle operazioni, scheda tutto il codice se perfetto ma ho un problema con il metodo di sostituzione per il frammento come risolvere questo errore qualcuno può aiutarmi ????hwo per correggere l'errore del metodo di sostituzione?

display del sistema:

metodo replace (int, frammento) nel tipo FragmentTransaction non è applicabile per gli argomenti (int, frammento)

StartActivity.java

package com.devlebactionbartab; 

import android.net.wifi.p2p.WifiP2pManager.ActionListener; 
import android.os.Bundle; 
import android.app.ActionBar; 
import android.app.ActionBar.Tab; 
import android.app.Activity; 
import android.app.FragmentTransaction; 
import android.drm.DrmStore.Action; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.view.Menu; 

public class StartActivity extends FragmentActivity { 

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


     ActionBar actionbar = getActionBar(); 
     actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
     actionbar.setTitle("Tabbed Layout"); 


     ActionBar.Tab Frag1Tab = actionbar.newTab().setText("Fragment1"); 
     ActionBar.Tab Frag2Tab = actionbar.newTab().setText("Fragment2"); 
     ActionBar.Tab Frag3Tab = actionbar.newTab().setText("Fragment3"); 
     ActionBar.Tab Frag4Tab = actionbar.newTab().setText("Fragment4"); 

     Fragment fragment1 = new Fragment_1(); 
     Fragment fragment2 = new Fragment_2(); 
     Fragment fragment3 = new Fragment_3(); 
     Fragment fragment4 = new Fragment_4(); 

     Frag1Tab.setTabListener(new MyTabsListener(fragment1)); 
     Frag2Tab.setTabListener(new MyTabsListener(fragment2)); 
     Frag3Tab.setTabListener(new MyTabsListener(fragment3)); 
     Frag4Tab.setTabListener(new MyTabsListener(fragment4)); 

     actionbar.addTab(Frag1Tab); 
     actionbar.addTab(Frag2Tab); 
     actionbar.addTab(Frag3Tab); 
     actionbar.addTab(Frag4Tab); 

    } 


class MyTabsListener implements ActionBar.TabListener{ 

    public Fragment fragment; 

    //constractor 
    public MyTabsListener (Fragment fragment){ 

     this.fragment = fragment; 
    } 

    @Override 
    public void onTabReselected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 
     ft.replace(R.id.fragment_container, fragment); 
    } 

    @Override 
    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 

    } 


} 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.start, menu); 
     return true; 
    } 

} 

risposta

3
android.app.FragmentTransaction.replace(int id,android.app.Fragment fragment); 

Il tuo metodo è alla ricerca di un frammento proveniente da android.app.Fragment, hai importato android.suppo rt.v4.app.Fragment. Il mio suggerimento è di importare il tuo FragmentTransaction dal supporto v4 pure.

passi:

eliminare: import android.app.FragmentTransaction;

aggiungere: import android.support.v4.app.FragmentTransaction;

Vai a eclipse-> Progetto-> Cancella -> pulire tutti.

v4 support FragmentTransaction

+0

@ wtsang02 ho fatto come hai detto io importazione importazione ** android.support.v4.app.FragmentTransaction; ** ma ancora lo stesso errore – LebDev

+0

eliminare sia FragmentTransaction e Fragment importazioni, aggiungere le importazioni v4, pulito. – wtsang02

+0

cosa vuoi dire aggiungendo le importazioni v4, pulito ?? ho provato a importare solo android.v4.app ma mi ha dato un errore – LebDev

3

Ho avuto lo stesso problema, perché stavo usando getFragmentManager(). Se usi getSupportFragmentManager(). risolverebbe il problema.

1

Si stanno mescolando tipi di supporto di frammenti più recenti con classi di supporto. Sostituire queste righe:

import android.app.Fragment; 

con import android.support.v4.app.Fragment;

import android.app.FragmentManager;
con import android.support.v4.app.FragmentManager;

Poi estendere android.support.v4.app.FragmentActivity invece di attività e cambiare le chiamate come getFragmentManager() con getSupportFragmentManager() e in modo simile per altri metodi che si potrebbero utilizzare.

+0

'importazione android.support.v4.app.Fragment' e altri tutti lo hanno risolto per me quando ho provato a getItem su framment adapter – mewc