1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > java replace第二个_java - 错误的第二个参数类型:从片段内调用.replace() - 堆栈内存溢出...

java replace第二个_java - 错误的第二个参数类型:从片段内调用.replace() - 堆栈内存溢出...

时间:2023-01-20 18:37:13

相关推荐

java replace第二个_java - 错误的第二个参数类型:从片段内调用.replace() - 堆栈内存溢出...

我知道这个问题经常被问到,但是没有一个被接受的解决方案对我有用。

尝试从其他片段之一启动“首选项菜单”片段时,出现经典的“错误的第二个参数类型”错误。

不幸的是,即使执行了该问题中可接受的答案所建议的操作(调用FragmentManager fragmentManager = getSupportFragmentManager()并导入android.support.v4.app.FragmentManager;当我调用.replace(时android.support.v4.app.FragmentManager;我仍然看到“第二个参数类型错误”的错误) )。

快速概览:我的MainActivity.java打开一个片段查看器(MenuPager.java),当在FragmentTrackRecordMenu.java(MenuPager.java的子片段)中单击按钮时,我尝试从中启动另一个片段(FragmentSettingsMenu.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);

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。