Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.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_Xml_Android Layout_Android Fragments - Fatal编程技术网

Java 通过片段方向更改保留的布局

Java 通过片段方向更改保留的布局,java,android,xml,android-layout,android-fragments,Java,Android,Xml,Android Layout,Android Fragments,对于名为InfoFragment的片段,我有两种布局:info_layout.xml(land)和info_layout.xml(port)。当我开始改变方向时,Android会根据需要改变布局。然而,它创建了一个新的视图(正如我所相信的那样),但保留了旧的视图。结果是,每次切换方向时,都会添加另一个视图(在一个方向更改后有两个视图,在两个-3个视图之后,…) 我不确定这个问题是从哪里来的,因为从我能查到的情况来看,只要(端口)和(陆地)中有东西,Android就应该处理好这一切 这是我的舱单:

对于名为InfoFragment的片段,我有两种布局:info_layout.xml(land)和info_layout.xml(port)。当我开始改变方向时,Android会根据需要改变布局。然而,它创建了一个新的视图(正如我所相信的那样),但保留了旧的视图。结果是,每次切换方向时,都会添加另一个视图(在一个方向更改后有两个视图,在两个-3个视图之后,…)

我不确定这个问题是从哪里来的,因为从我能查到的情况来看,只要(端口)和(陆地)中有东西,Android就应该处理好这一切

这是我的舱单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.anothergamedesigner.listviewtest">
<supports-screens
    android:smallScreens="true"
    android:normalScreens="true"
    android:largeScreens="true"
    android:xlargeScreens="true" />

<application
    android:allowBackup="true"
    android:icon="@drawable/icon"
    android:logo="@drawable/logo"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".ToolReaderActivity"
        android:label="@string/app_name"
        android:theme="@style/Theme.AppCompat">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".InfoActivity"
        android:theme="@style/Theme.AppCompat"
        android:configChanges="keyboardHidden|orientation|screenSize"
        />
</application>
public class InfoFragment extends Fragment {

    private TextView mTitle;
    private TextView mSubtitle;
    private TextView mDescription;

    //Tool to be displayed
    Tool mTool = null;

    //Parameterless constructor needed for framework
    public InfoFragment(){
        super();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.info_layout, container, false);
        loadView();
        return view;
    }

    @Override
    public void onViewCreated(View view,Bundle savedInstanceState) {

        mTitle = (TextView) view.findViewById(R.id.title);
        mSubtitle = (TextView) view.findViewById(R.id.subtitle);
        mDescription = (TextView) view.findViewById(R.id.description);

        if (mTool != null) {
            updateDisplay();
        }
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        String title, subtitle, description;

        if (savedInstanceState != null) {
            //Restore the fragment's state here
            title = savedInstanceState.getString("title");
            subtitle = savedInstanceState.getString("subtitle");
            description = savedInstanceState.getString("description");

            if(title != null)
                mTitle.setText(title);
            if(subtitle != null)
                mSubtitle.setText(subtitle);
            if(description != null)
                mDescription.setText(description);
        }
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        //Save the fragment's state here
        outState.putString("title", mTitle.getText().toString());
        outState.putString("subtitle",  mSubtitle.getText().toString());
        outState.putString("description",  mDescription.getText().toString());
    }

    public void displayTool(Tool t){
        mTool = t;
        loadView();
    }

    private void loadView(){
        if (getView() != null) {
           updateDisplay();
        }
    }

    private void updateDisplay() {
        mTitle.setText(mTool.getTitleTxt());
        mSubtitle.setText(mTool.getSubtitleTxt());
        mDescription.setText(mTool.getDescriptionTxt());
    }
}