2013-10-02 1 views
5

ich erstelle android-anwendung mit aktionsbalken tab den ganzen code wenn perfekt aber ich habe ein problem mit der ersetzungsmethode für das fragment wie man diesen fehler beheben kann mir jemand helfen ????hwo, um die Ersetzung Methode Fehler zu beheben?

das System display:

Verfahren (int, Fragment) in der Art nicht anwendbar FragmentTransaction ersetzen ist für die Argumente (int, Fragment)

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; 
    } 

} 

Antwort

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

Ihre Methode sucht nach einem Fragment, das von android.app.Fragment kommt, Sie haben android.suppo importiert rt.v4.app.Fragment. Mein Vorschlag ist, dass Sie Ihre FragmentTransaction auch von der v4-Unterstützung importieren.

Schritte:

LÖSCHEN: import android.app.FragmentTransaction;

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

Der Sprung Eclipse-> Ausbau-> sauber -> sauber alles.

v4 support FragmentTransaction

+0

@ wtsang02 ich tat, wie Sie sagten, ich importiere import ** android.support.v4.app.FragmentTransaction; ** aber immer noch den gleichen Fehler – LebDev

+0

löschen Sie sowohl FragmentTransaction und Fragment Importe, fügen Sie die v4 Importe, sauber. – wtsang02

+0

was meinst du mit v4 importieren, sauber ?? Ich habe versucht, nur android.v4.app zu importieren, aber es gibt mir einen Fehler – LebDev

3

Ich hatte dasselbe Problem, weil ich getFragmentManager wurde mit(). Wenn Sie getSupportFragmentManager() verwenden. Es würde das Problem lösen.

1

Sie mischen neuere Supporttypen für Fragmente mit Supportklassen. Ersetzen Sie diese Zeilen:

import android.app.Fragment; 

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

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

Dann verlängern android.support.v4.app.FragmentActivity statt Aktivität und ändern Anrufe wie getFragmentManager() mit getSupportFragmentManager() und ähnlich für andere Methoden, die Sie möglicherweise verwenden.

+0

'importieren android.support.v4.app.Fragment' und andere haben es für mich repariert, als ich versucht habe, den Fragment-Adapter zu bekommen – mewc