有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java片段翻译和电话定位错误

手机的方向和片段翻译错误

我有一个活动和一些片段。第一个片段立即出现在带有徽标的活动上,3秒钟后第二个片段转换过来。问题是,如果我改变手机的方向,第一个片段会以与启动应用程序相同的延迟和行为重新出现

主要活动:

package com.mainpackage.pinbook;

import 安卓.support.v4.app.FragmentTransaction;
import 安卓.support.v7.app.AppCompatActivity;
import 安卓.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 安卓.os.Bundle;
import 安卓.os.Handler;
import 安卓.support.annotation.NonNull;
import 安卓.support.annotation.Nullable;
import 安卓.support.v4.app.Fragment;
import 安卓.support.v4.app.FragmentTransaction;
import 安卓.support.v7.app.AppCompatActivity;
import 安卓.util.Log;
import 安卓.view.LayoutInflater;
import 安卓.view.View;
import 安卓.view.ViewGroup;
import 安卓.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();
}
}

第二个片段可以是空的

我想要的只是当我改变手机的方向时,保持在当前片段上


共 (1) 个答案

  1. # 1 楼答案

    当设备旋转时onCreate()再次被调用。 将片段事务包装在onCreate()中,如下所示:

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

    这将防止旋转时第一个碎片被放回顶部