2014-02-12 5 views
7

Ich versuche, Fragements zu verwenden. Aber in MainActivity.java Datei die transaction.add(R.id.my_layout, testfrag, ""); nicht korrekt eingeleitet. Bitte finden Sie unter dem Code ich verwendet.Fehler: Die Methode add (int, Fragment, String) im Typ FragmentTransaction ist nicht anwendbar für die Argumente (int, FragementTest, String)

package com.example.testtabs; 

import android.os.Bundle; 
import android.app.Activity; 
import android.app.FragmentManager; 
import android.app.FragmentTransaction; 
import android.app.TabActivity; 
import android.view.Menu; 
import android.widget.TabHost; 
import android.support.v4.app.Fragment; 
import com.example.testtabs.R; 



public class MainActivity extends TabActivity { 


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

     FragementTest testfrag=new FragementTest(); 
     FragmentManager manager=getFragmentManager(); 
     FragmentTransaction transaction=manager.beginTransaction(); 
     transaction.add(R.id.my_layout, testfrag, "");//Error is here 

    } 
} 

activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" 
    android:id="@+id/my_layout" 
    > 

Error: The method add(int, Fragment, String) in the type FragmentTransaction is not applicable for the arguments (int, FragementTest, String) 

Fragement.test

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

/** 
* A simple {@link android.support.v4.app.Fragment} subclass. 
* 
*/ 
public class FragementTest extends Fragment { 

    public FragementTest() { 
     // Required empty public constructor 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.fragment_fragement, container, false); 
    } 

} 
+0

Was ist ein FragmentTest? – Blackbelt

+3

Erweitert Ihr 'FragmentTest'' Fragment'? –

+0

Umwandlung in (Fragment). Sie erweitern Fragment (v4) im FragmentTest. – icbytes

Antwort

19

Wechsel:

import android.app.FragmentManager; 
import android.app.FragmentTransaction; 

zu:

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

oder ---

change:

import android.support.v4.app.Fragment; 

zu

import android.app.Fragment; 
+1

Jetzt bekomme ich Fragmentmanager manager = getFragmentManager(); method Fehler Typ stimmt nicht überein: kann nicht von android.app.FragmentManager in android.support.v4.app.FragmentManager konvertieren – VenushkaT

+2

Verwenden Sie stattdessen getSupportFragmentManager() und Ihre Aktivität muss Fragment-Aktivität sein. –

+0

Es hat nicht funktioniert. – VenushkaT

1

Das gesamte Fragment sollte android.app.Fragment sein. Wenn Sie android.support.v4.app.Fragment verwenden möchten, sollten Sie etSupportFragmentManager() verwenden, um den Manager zu erhalten.

+0

Sie sollten hinzufügen "g" "getSupportFragmentManager();" – Cabezas

0

Sein für mich arbeiten:

Anstelle der Verwendung von getFragmentManager verwenden getSupportFragmentManager();

Verwandte Themen