Java 活动正在被破坏
我只想感谢昨天回复我帖子的人,这对我帮助很大,但现在话题不同了。我设法修复了NPE,但显然我的活动被破坏了 这是logcat:Java 活动正在被破坏,java,android,android-activity,ondestroy,Java,Android,Android Activity,Ondestroy,我只想感谢昨天回复我帖子的人,这对我帮助很大,但现在话题不同了。我设法修复了NPE,但显然我的活动被破坏了 这是logcat: 03-26 06:55:27.411: E/AndroidRuntime(1321): java.lang.IllegalStateException: Activity has been destroyed 03-26 06:55:27.411: E/AndroidRuntime(1321): at android.support.v4.app.Fragmen
03-26 06:55:27.411: E/AndroidRuntime(1321): java.lang.IllegalStateException: Activity has been destroyed
03-26 06:55:27.411: E/AndroidRuntime(1321): at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1342)
03-26 06:55:27.411: E/AndroidRuntime(1321): at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)
03-26 06:55:27.411: E/AndroidRuntime(1321): at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574)
03-26 06:55:27.411: E/AndroidRuntime(1321): at As2.packageTK.TicTacToeGame.changeLayout(TicTacToeGame.java:157)
03-26 06:55:27.411: E/AndroidRuntime(1321): at As2.packageTK.TicTacToeGame.checkTurn(TicTacToeGame.java:132)
03-26 06:55:27.411: E/AndroidRuntime(1321): at As2.packageTK.PlayerTurn1$1.onClick(PlayerTurn1.java:34)
03-26 06:55:27.411: E/AndroidRuntime(1321): at android.view.View.performClick(View.java:4202)
以下是位于my TictoEgame FragmentActivity类中的checkTurn()和changeLayout():
public class TicTacToeGame extends FragmentActivity{
//fields..
public int checkTurn()
{
if(turn == 1)
{
changeLayout(turn);
turn = 2;
return 1;
}
else
{
changeLayout(turn);
turn = 1;
return 2;
}
}
//changeLayout method
public void changeLayout(int turn)
{
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.fragment_container);
FragmentTransaction ft;
if(turn == 1) //if its player 1's turn
{
if(fragment == null) //checks wether the current framelayout contains a fragment or not
{
ft = fm.beginTransaction();
ft.add(R.id.fragment_container, new PlayerTurn1());
ft.commit();
//setPlayer1();
}
else
{
ft = fm.beginTransaction();
ft.replace(R.id.fragment_container, new PlayerTurn1());
ft.commit();
//setPlayer1();
}
}
else
{
if(fragment == null)
{
ft = fm.beginTransaction();;
ft.add(R.id.fragment_container, new PlayerTurn2());
ft.commit();
//setPlayer2();
}
else
{
ft = fm.beginTransaction();;
ft.replace(R.id.fragment_container, new PlayerTurn2());
ft.commit();
//setPlayer2();
}
}
}
}
以下是我的片段的onCreatedActivity和onCreateView:
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.playerturn1, container, false);
return view;
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
doneP1 = (Button) getActivity().findViewById(R.id.doneP1);
//resetP1 = (Button) this.getActivity().findViewById(R.id.resetP2);
doneP1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
object.checkTurn();
}
});
}
有什么想法吗?问题似乎出在第34行“Player1”类的“onClick”方法中。第34行是我的括号的结尾。也许我调用object.checkTurn()时出错了?您可以在onClick中调试代码,并获得有关问题的正确见解,是吗?签出后很冷,我修复了它,花了我几个小时,代码工作正常。我正在发布一个新问题,稍后我将发布解决方案