java - 从 android(Java) 中的另一个 fragment 切换回来时恢复 fragment

标签 java android class android-fragments

I heve read all the answers related this.

我有 2 个按钮,两个按钮都会打开不同的 fragment 。

当我打开一个 fragment ,用它做一些事情,打开另一个 fragment 并返回到第一个 fragment 时,我看到我所做的所有更改都没有应用,因为 fragment 重新启动了。 请帮助我..

Activity

    package com.example.canvastag;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.example.canvastag.fragments.firstFrag;
import com.example.canvastag.fragments.secondFrag;

public class asking extends AppCompatActivity {
    firstFrag frag1;
    secondFrag frag2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_asking);
        Button button = findViewById(R.id.frag1button);
        Button button2 = findViewById(R.id.frag2button);
        frag1 = new firstFrag();
        frag2 = new secondFrag();

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer, frag1, "").commit();
            }
        });

        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer, frag2, "").commit();
            }
        });


    }
}

fragment 1

public class firstFrag extends Fragment {
View view;
TextView textView;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view= inflater.inflate(R.layout.fragment_first, container, false);
        textView=view.findViewById(R.id.textFrag);
        Button button = view.findViewById(R.id.buttonAdd);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textView.setText("button clicked");
            }
        });

     return view;
    }
}

fragment 2-

public class secondFrag extends Fragment {
View view;
TextView textView;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view= inflater.inflate(R.layout.fragment_second, container, false);
        textView=view.findViewById(R.id.textFrag);
        Button button = view.findViewById(R.id.buttonAdd);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textView.setText("button seocnd clicked");
            }
        });

     return view;
    }
}

我想在返回 fragment 时恢复 fragment ,而不是重新启动。

输出-

enter image description here

非常感谢...

最佳答案

而不是:

  getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer, frag1, "").commit();

尝试使用:

  getSupportFragmentManager().beginTransaction().add(R.id.fragmentContainer, frag1, "").commit();

注意:

您可以将其添加到 fragment 事务中:addToBackStack(null),这样您之前的状态将被添加到后退堆栈中,以便您可以使用后退按钮返回。

关于java - 从 android(Java) 中的另一个 fragment 切换回来时恢复 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57135334/

相关文章:

java - JAVA套接字服务器应用程序框架

java - Android Studio : Java- making a global variable

java - 在android中更新可绘制图像运行时

Java:更改方法参数的最有效方法

c++ - 创建比较两个对象的方法

java - 我无法以 JPA 问题启动 jboss

java - JAXB - 解码时遵循 keyref 的示例

c# - 如何限定一个类只能在类库项目中使用?

java - Apache Nifi 属性描述符的 dynamicallyModifiesClasspath() 的 Hello world 程序不起作用

java - 一大堆 Material 设计错误