繁体   English   中英

从android(Java)中的另一个片段切换回来时恢复片段

[英]Resume fragment when switching back from a another fragment in android(Java)

我已经阅读了与此相关的所有答案。

我有2个按钮,都打开了不同的片段。

当我打开一个片段时,用它做一些事情,打开另一个片段,然后回到第一个片段,然后我发现我所做的所有更改都没有应用,因为片段重新启动了。 请帮我..

活动

    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();
            }
        });


    }
}

片段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;
    }
}

片段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;
    }
}

我想恢复片段而不是重新开始。

输出-

在此处输入图片说明

非常感谢...

代替:

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

尝试使用:

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

注意:

您可以将其添加到片段事务中: addToBackStack(null)以便将先前的状态添加到Backstack中,使您可以使用“后退”按钮返回。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM