この質問はよく聞かれますが、受け入れられた解決策のどれも私のために働いていません。 (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);
}
}
FragmentManagerはv4タイプであり、FragmentSettingsMenuはv4タイプではありません。それは許されません。 –
@RushiAyyappaには、FragmentSettingsMenuがv4ライブラリを使用する方法がありますか?私はGoogleのチュートリアルからそのコードを取ったので、私は変更を行う方法に慣れていない。 – Cody