5

完璧であればすべてのコードをアクション バー タブで Android アプリケーションを作成していますが、フラグメントの置換メソッドに問題があります。このエラーを修正するには?

システム表示:

FragmentTransaction 型のメソッド replace(int, Fragment) は、引数 (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;
    }
}
4

3 に答える 3

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

メソッドは android.app.Fragment からの Fragment を探しています。android.support.v4.app.Fragment をインポートしました。私の提案は、FragmentTransaction を v4 サポートからもインポートすることです。

手順:

削除:import android.app.FragmentTransaction;

追加:import android.support.v4.app.FragmentTransaction;

Eclipse-> project-> clean -> clean all に移動します。

v4 サポート FragmentTransaction

于 2013-10-02T15:20:30.887 に答える
3

getFragmentManager() を使用していたため、同じ問題が発生しました。getSupportFragmentManager() を使用する場合。それは問題を解決するでしょう。

于 2013-11-07T13:35:15.033 に答える
1

新しいフラグメント サポート タイプとサポート クラスを混在させています。次の行を置き換えます。

import android.app.Fragment; 

import android.support.v4.app.Fragment;

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

次に、Activity の代わりに android.support.v4.app.FragmentActivity を拡張し、getFragmentManager() のような呼び出しを getSupportFragmentManager() で変更し、使用している可能性のある他のメソッドについても同様に変更します。

于 2014-12-03T09:01:15.913 に答える