我正在尝试将数据从活动传递到片段。我有这个activityA使用片段作为布局。
现在,当我尝试将数据从活动传递到片段时,我一直变为空。我甚至调试过,发现savedInstanceState
Bundle
为空。我真的不知道我做错了什么。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String s = getIntent().getStringExtra("message");
Bundle bundle = new Bundle();
bundle.putString("params", s);
// set MyFragment Arguments
Camera2BasicFragment myObj = new Camera2BasicFragment();
myObj.setArguments(bundle);
setContentView(R.layout.activity_camera);
if (null == savedInstanceState) {
getFragmentManager().beginTransaction()
.replace(R.id.container, Camera2BasicFragment.newInstance())
.commit();
}
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
String s = getArguments().getString("params");
}
}
答案 0 :(得分:2)
您在执行交易时创建了新实例。只需使用相同的实例进行交易。这样做。
Camera2BasicFragment myObj = new Camera2BasicFragment();
myObj.setArguments(bundle);
getFragmentManager().beginTransaction()
.replace(R.id.container, myObj)
.commit();
如果你使用单例模式进行片段,那么你必须获取一次实例并将包数据设置为它。
Camera2BasicFragment myObj = Camera2BasicFragment.newInstance();
myObj.setArguments(bundle);
getFragmentManager().beginTransaction()
.replace(R.id.container, myObj)
.commit();
答案 1 :(得分:0)
您正在使用 Camera2BasicFragment 类的2个对象。你要设置参数的地方 1)
Camera2BasicFragment myObj = new Camera2BasicFragment();
myObj.setArguments(bundle);
和 2)
Camera2BasicFragment.newInstance()
替换片段时仅使用Camera2BasicFragment类的一个实例。
答案 2 :(得分:0)
在片段中尝试此代码
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getArguments();
if(bundle!=null)
{
String s = bundle.getString("params");
}
}