Java 将消息发送到上一个片段
我有两个片段。比如片段A和片段B。现在在点击片段A中的某个按钮后,我使用下面的代码启动片段BJava 将消息发送到上一个片段,java,android,android-fragments,Java,Android,Android Fragments,我有两个片段。比如片段A和片段B。现在在点击片段A中的某个按钮后,我使用下面的代码启动片段B getFragmentManager() .beginTransaction() .replace(R.id.framelayout, companyDetailsFragment) .addToBackStack(null)
getFragmentManager()
.beginTransaction()
.replace(R.id.framelayout, companyDetailsFragment)
.addToBackStack(null)
.commit();
getFragmentManager().popBackStack()
现在我在片段B中有了另一个后退按钮
我使用下面的代码删除这个特定的片段
getFragmentManager()
.beginTransaction()
.replace(R.id.framelayout, companyDetailsFragment)
.addToBackStack(null)
.commit();
getFragmentManager().popBackStack()
现在我想要的是,当用户点击后退按钮时,我想把一些特定的数据传递给前面的片段A
onStart()
方法没有被调用,因此我没有得到任何值。
那么如何获取数据呢?我们将非常感谢您的帮助。您有几个选择:
好了,当从堆栈开始时,没有办法向片段添加额外的内容(如果可以传递变量,您可以在onResume()中访问它)。我能够解决它。下面是我的答案 1.创建一个接口
public interface OnButtonPressListener {
public void onButtonPressed(String msg);
}
2.在片段B中实现了这一点
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
buttonListener = (OnButtonPressListener) getActivity();
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement onButtonPressed");
}
}
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getFragmentManager().popBackStack();
buttonListener.onButtonPressed("Message From First Fragment");
}
});
3.在活动类中使用该侦听器
public class ParentActivity extends FragmentActivity implements OnButtonPressListener {
@Override
public void onButtonPressed(String msg) {
FragmentA Obj=(FragmentA) getSupportFragmentManager().findFragmentById(R.id.framelayout);
Obj.setMessage(msg);
}
}
4.在类片段中创建方法
public void setMessage(String msg){
System.out.print("got it");
}
从中获得参考。希望这对其他人有帮助。如果有人有其他好的解决方案,请回答这个问题。你也可以在片段的
OnResume()中获取数据。请参考此链接:@prshntjjjl_android我也尝试过resume()。但抱歉,soham不工作,因此我需要研发:(谢谢你的回答。我不想使用任何全局变量,因为这是一种不好的做法。我认为创建任何新实例都不是一个好主意。不过谢谢你的帮助