【问题标题】:How to fix the replace method error on Android?如何修复 Android 上的替换方法错误?
【发布时间】:2013-10-02 15:14:58
【问题描述】:

我正在使用操作栏选项卡创建 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;
    }
}

【问题讨论】:

    标签: android tabs compiler-errors android-actionbar


    【解决方案1】:
     android.app.FragmentTransaction.replace(int id,android.app.Fragment fragment);
    

    您的方法正在寻找来自 android.app.Fragment 的 Fragment,您已导入 android.support.v4.app.Fragment。我的建议是你也从 v4 支持中导入 FragmentTransaction。

    步骤:

    删除import android.app.FragmentTransaction;

    添加import android.support.v4.app.FragmentTransaction;

    转到eclipse->project->clean->clean all。

    v4 support FragmentTransaction

    【讨论】:

    • @ wtsang02 我照你说的做了我 import import android.support.v4.app.FragmentTransaction; 但还是同样的错误
    • 删除 FragmentTransaction 和 Fragment 导入,添加 v4 导入,清理。
    • 添加 v4 导入是什么意思,干净??我试图只导入 android.v4.app 但它给了我一个错误
    • 添加了回答中的步骤。
    • 我将编辑我的问题并添加我尝试对导入执行的操作,也许您可​​以帮助我
    【解决方案2】:

    我遇到了同样的问题,因为我使用的是 getFragmentManager()。如果您使用 getSupportFragmentManager()。它会解决问题。

    【讨论】:

      【解决方案3】:

      您正在将较新的片段支持类型与支持类混合。替换这些行:

      import android.app.Fragment; 
      

      import android.support.v4.app.Fragment;

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

      然后扩展 android.support.v4.app.FragmentActivity 而不是 Activity 并使用 getSupportFragmentManager() 更改诸如 getFragmentManager() 之类的调用,以及您可能正在使用的其他方法。

      【讨论】:

      • 当我尝试在片段适配器上获取项目时,import android.support.v4.app.Fragment 和其他都为我修复了它
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多