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 - 是否可以创建私有(private)但持久的文件?

java - 如何使用 ArrayList.contain() 来检查 java 中的对象

android - 如何以编程方式在 Android 的 API 23 及更高版本中获取位置(lat,lng)?

javascript - 无法在 Android 设备上运行 React-Native 示例代码

android - 无法将模块导入android studio

java - 在 Java 中使用 MVC 模式

java - 如何让 Eclipse 知道 Maven 存储库中的 OSGI 包(本地和|远程)

java - 三角形未在 OSX 上的 OpenGL 2.1 中绘制

java - 具有 RSA 签名的 SHA256 在各种 Android 设备上返回不同的输出

android - 如何在 Android 上扩展 include 标签