java - fragment 翻译和电话方向错误

标签 java android

手机的方向和 fragment 翻译错误。

我有一个 Activity 和一些 fragment 。第一个 fragment 立即出现在带有 Logo 的 Activity 上方,3 秒后第二个 fragment 翻译过来。问题是,如果我改变手机的方向,第一个 fragment 会以与我启动应用程序相同的延迟和相同的行为重新出现。

主要 Activity :

package com.mainpackage.pinbook;

import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.mainpackage.pinbook.com.autentification.LoginFragment;


public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
    fragmentTransaction.replace(R.id.main_container , new MainScreen());
    fragmentTransaction.commit();
}
}

主屏幕:

package com.mainpackage.pinbook;

import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;


import com.mainpackage.pinbook.com.autentification.*;

public class MainScreen extends Fragment{
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    return inflater.inflate(R.layout.main_screen , container , false);
}

private TextView entry_text;
public static final String TAG = MainScreen.class.getSimpleName();

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            slide();
        }
    }, 3000);

}

private void slide(){
    FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
    fragmentTransaction.setCustomAnimations(0,R.anim.slide_in_left);
    fragmentTransaction.replace(R.id.main_container , new LoginFragment());
    fragmentTransaction.commit();
}

@Override
public void onStop() {
    super.onStop();
    ((AppCompatActivity)getActivity()).getSupportActionBar().show();
}

@Override
public void onResume() {
    super.onResume();
    ((AppCompatActivity)getActivity()).getSupportActionBar().hide();
}
}

第二个 fragment 可以是空白的。

我想要的只是在更改手机方向时保持在当前 fragment 上

最佳答案

当设备旋转时 onCreate() 被再次调用。 像这样在 onCreate() 中包装您的 fragment 事务:

if (savedInstanceState == null) {
    FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
    fragmentTransaction.replace(R.id.main_container , new MainScreen());
    fragmentTransaction.commit();
}

这将防止第一个 fragment 在旋转时放回顶部。

关于java - fragment 翻译和电话方向错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54755563/

相关文章:

Java可见接口(interface)无法实现

java - 为什么 ExecutorService 等待所有线程完成而 Completablefuture 不等待?

java - 如何在 Logback 中为整个应用程序/JVM 设置类似 MDC 的变量?

android - 为什么 Google+ 登录完成登录时出现错误?

android - 平板电脑和服务器之间的双向实时通信系统

android - 确定 Android 设备的摄像头高度和宽度

android - 空间不足时使用替代布局

java - spring如何相互调用方法?

java - Git Post Hook 启动 Jenkins 作业

php - JSONObject 文本搜索到 Mysql