我已经非常感谢SO的用户让我这么做了,但是经过6个多小时的开发者页面阅读后,我仍然无法在Android模拟器上使用它。 < / p>
我只是想把一个片段换成另一个片段。单击按钮时发生的情况是初始的碎片动画很快,但保持不变。它仅动画一次,后续按钮按下不会产生后续动画。我不知道是不是因为某些原因,onCreate代码以某种方式再次运行,快速替换了#34;点击frag&#34;或者如果问题出在replaceFrag
方法本身或者某些内容执行不正确的情况下。 如果有人看到问题并且可以指出它的位置(没有完整的详细解释),我会非常感激。当我开始工作时,我会给那个人奖励绿色支票并发布解决方案。
这是Main_Activity:
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (findViewById(R.id.fragment_container) != null) {
if (savedInstanceState != null) {
return;
}
}
// Add the fragment to'fragment_container'
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Menu_Fragment fragment = new Menu_Fragment();
fragment.setArguments(getIntent().getExtras());
ft.add(R.id.fragment_container, fragment, "INITIAL_FRAG");
ft.commit();
}
public void replaceFrag(View v) {
Fragment fragment = new Click_Fragment(); //Creates a new Click_Fragment when button selected
Fragment savedFragment = null; // creates an instance of savedFragment
if (fragment != null) { //check to see if fragment was instantiated, always true
savedFragment = getSupportFragmentManager().findFragmentByTag("FB");
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
if (savedFragment != null) {//searches to see if the Click_Fragment has already been created once
ft.replace(R.id.fragment_container, savedFragment, "FB");
} else {
ft.replace(R.id.fragment_container, fragment, "FB");
}
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
}
}
}
该按钮位于menu_fragment布局中,其XML具有以下属性:
android:onClick="replaceFrag"
编辑:当按下按钮时,SDK日志中会出现此错误:
mycompany.fragment_test W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xab70a680, error=EGL_SUCCESS
答案 0 :(得分:-1)
你能解释为什么你在replaceFrag()
中有这两行:
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
我建议您通过调试或使用日志语句来查看正在发生的事情。您甚至可以在replaceFrag()
处打印背书。另外,我不会在XML中设置replaceFrag()
。