Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 旋转后,目标片段的结果似乎为空_Java_Android_Android Fragments_Rotation - Fatal编程技术网

Java 旋转后,目标片段的结果似乎为空

Java 旋转后,目标片段的结果似乎为空,java,android,android-fragments,rotation,Java,Android,Android Fragments,Rotation,我正在开发一个游戏。我有一个游戏片段和一个规则片段。首先,游戏活动无规则启动游戏片段: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_game); FragmentManager fm = getSupportFragmentManager();

我正在开发一个游戏。我有一个游戏片段和一个规则片段。首先,游戏活动无规则启动游戏片段:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_game);

    FragmentManager fm = getSupportFragmentManager();
    Fragment fragment = fm.findFragmentById(R.id.fragment_container);

    if (fragment == null) {
        fragment = new GameFragment();
        fm.beginTransaction().add(R.id.fragment_container, fragment).commit();
    }
在游戏片段中,我可以启动规则片段:

            RuleFragment ruleFragment = new RuleFragment();

            ruleFragment.setTargetFragment(GameFragment.this, RULE_FRAGMENT);

            FragmentManager fm = getActivity().getSupportFragmentManager();

            //Sets the list of previously played rounds as an argument for the new fragment
            Bundle b = new Bundle();
            b.putParcelableArrayList(ROUNDS_PLAYED, mRounds);
            ruleFragment.setArguments(b);

            fm.beginTransaction().replace(R.id.fragment_container, ruleFragment).addToBackStack(null).commit();
我可以像这样回到游戏片段:

if(ruleIsSelected && mRound != null) {
            Intent intent = new Intent();
            intent.putExtra(CHOSEN_RULE, mRound);
            getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, intent);
            getFragmentManager().popBackStack();
        }
我的问题是,我可以在横向模式和纵向模式下从游戏片段启动规则片段,并通过意图返回一个没有问题的结果。但当我在规则片段中,然后旋转屏幕时,似乎什么都不起作用。我按下返回游戏的按钮仍然有效,但似乎没有选择新的规则对象。在我的游戏片段中,我有:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == RULE_FRAGMENT && resultCode == Activity.RESULT_OK) {
        if (data != null) {
            Round chosenRule = data.getParcelableExtra(RuleFragment.CHOSEN_RULE);
            if (chosenRule != null) {
                mActiveRound = chosenRule;
                setThrowsLeftTextView(mActiveRound.getThrowsLeft());
                mRounds.add(mActiveRound);
            }
        }
    }
}
当我不旋转时,一切都像一个符咒。但是当我在规则片段中旋转时,setThrowsLeftTextView(…)方法会给我一个空指针。记住,当我不旋转时,该方法确实有效

简而言之;如果片段A启动片段B,然后我旋转屏幕,我如何将数据(对象)从B发送到A,并在A中设置一个文本视图,表示我从B发送的内容的属性(例如数字)