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 ,而不是重新启动。
输出-
非常感谢...
最佳答案
而不是:
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/