0

この質問はよく聞かれますが、受け入れられた解決策のどれも私のために働いていません。 (reference solution間違った第2引数型:フラグメント内から.replace()を呼び出す

私のotherfragmentsの1つからPreference Menuフラグメントを起動しようとすると、古典的な "間違った第2引数型"エラーが表示されます。

Unforunately、でもその問題の受け入れ答えは()私は.replace(呼び出すときに、私はまだ「間違った第二引数の型」バグを参照してくださいFragmentManager fragmentManager = getSupportFragmentManager()を呼び出し、android.support.v4.app.FragmentManager;をインポート示唆して何をした後

概要:私のMainActivity.javaは、FragmentTrackRecordMenu.java(MenuPager.javaの子フラグメント)内でボタンがクリックされたときに別のフラグメント(FragmentSettingsMenu.java)を起動しようとするフラグメントビューページを開きます(MenuPager.java)。

私のコードは以下の通りです。メニューボタン(FragmentTrackRecord内)がクリックされたときに設定メニューのフラグメントを起動しようとしましたが、上記のコンパイラエラー。このonClickからPreferencesFragmentを正常に表示するにはどうすればよいですか?

MainActivity.java

import android.support.v4.app.FragmentActivity; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 

public class MainActivity extends FragmentActivity { 
    public static ViewPager menuPager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     ... 
     menuPager = (ViewPager) findViewById(R.id.pager); 
     PagerAdapter pageAdapter = new MenuPagerAdapter(getSupportFragmentManager()); 
     menuPager.setAdapter(pageAdapter); 
     ... 
    } 
} 

MenuPagerAdapter.java

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

public class MenuPagerAdapter extends FragmentPagerAdapter { 

    public MenuPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int arg0) { 
     // TODO Auto-generated method stub 
     switch (arg0) { 
      case 0: 
       return new FragmentNeckDisplayMenu(); 
      case 1: 
       return new FragmentCapoMenu(); 
      case 2: 
       return new FragmentTrackRecordMenu(); 
      default: 
       break; 
     } 
     return null; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return 3; 
    } 
} 

FragmentTrackRecordMenu.java

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

    public class FragmentTrackRecordMenu extends Fragment { 
     private Button menuIcon; 

    public FragmentTrackRecordMenu(){ } //default constructor 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.menu_fragment_recorder, container, false); 

     menuIcon = (Button) v.findViewById(R.id.menuIcon); 
     menuIcon.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { //open popup window 
       FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 
       fragmentManager.beginTransaction() 
         .replace(android.R.id.content, new FragmentSettingsMenu()) //COMPILER ERROR 
         .commit(); 
      } 
     }); 
    } 
} 

FragmentSettingsMenu.java

public class FragmentSettingsMenu extends PreferenceFragment { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Load the preferences from the XML resource 
     addPreferencesFromResource(R.xml.preferences); 
    } 
} 
+0

FragmentManagerはv4タイプであり、FragmentSettingsMenuはv4タイプではありません。それは許されません。 –

+0

@RushiAyyappaには、FragmentSettingsMenuがv4ライブラリを使用する方法がありますか?私はGoogleのチュートリアルからそのコードを取ったので、私は変更を行う方法に慣れていない。 – Cody

答えて

0

getSupportFragmentManagerは()android.support.v4.app.FragmentManagerのフラグメントマネージャを返し、あなたのFragmentSettingMenu.javaはandroid.app.Fragmentです。そのため、「第2引数型が間違っています」というエラーは、互換性がないためです。

+0

これで修正は何ですか? FragmentSettingsMenuを何とか変更しますか? – Cody

+0

getSupportFragmentManager()の代わりにgetFragmentManager()を使用するか、android.support.v4.app.Fragmentを使用してFragmentSettingsMenuを拡張します – 29yash

0

あなたのFragmentManagerはv4タイプであり、FragmentSettingsMenuはv4タイプではありません。それは許されません。下の行をアクティビティで試してみてください。このlink here

.try

getFragmentManager().beginTransaction().replace(android.R.id.content, 
      new PrefsFragment()).commit(); 

それはあなたにいくつかの助けを与えることがあります。

関連する問題