-1

このコードを書いていると、「Fragment Fragment1 = new Fragment_1();」のような 3 行で、「型の不一致: Fragment_1 から Fragment に変換できません」というエラーが常に発生します。これは、コードがリスナーに対応するものを認識していないため、コードの実行時にフラグメントが表示されない原因でもあると考えています。

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockFragmentActivity;

import android.os.Bundle;
import android.app.Activity;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.Fragment;
import android.view.Menu;

public class MainActivity extends SherlockFragmentActivity {

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

    ActionBar actionbar = getSupportActionBar();
    actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    actionbar.setTitle("TabApp");

    ActionBar.Tab Frag1Tab = actionbar.newTab().setText("Tab 1");
    ActionBar.Tab Frag2Tab = actionbar.newTab().setText("Tab 2");
    ActionBar.Tab Frag3Tab = actionbar.newTab().setText("Tab 3");

    Fragment Fragment1 = new Fragment_1();
    Fragment Fragment2 = new Fragment_2();
    Fragment Fragment3 = new Fragment_3();

    Frag1Tab.setTabListener(new MyTabsListener(Fragment1));
    Frag2Tab.setTabListener(new MyTabsListener(Fragment2));
    Frag3Tab.setTabListener(new MyTabsListener(Fragment3));

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



}

class MyTabsListener implements ActionBar.TabListener {
    public Fragment fragment;

    public MyTabsListener(Fragment fragment){
        this.fragment = fragment;
    }


    @Override
    public void onTabSelected(Tab tab, android.support.v4.app.FragmentTransaction ft) {
        // TODO Auto-generated method stub
        ft.replace(R.id.fragment_container, fragment);

    }

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

    }

    @Override
    public void onTabReselected(Tab tab,    android.support.v4.app.FragmentTransaction ft) {
        // TODO Auto-generated method stub

    }


}

}

Fragment_1 クラスは次のとおりです。

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Fragment_1 extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    return inflater.inflate(R.layout.fragment_1, container, false);
    }
}
4

1 に答える 1

1

Fragment_1 は android.support.v4.app.Fragment(または SherlockFragment) を継承していますか? それともandroid.app.Fragmentから継承していますか?android.support.v4.app.Fragment である必要があります

于 2013-06-24T18:12:16.140 に答える