Android中片段无法获得活动是什么情况?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

我有一个活动可以做一个片段交易:

DetailFragment newFragment = new DetailFragment();
transaction.replace(R.id.mylist, newFragment);
transaction.addToBackStack(null);
transaction.commit();

我需要在newFragment中的布局中替换动态字符串。我认为我可以在transaction.commit()之后调用:

newFragment.setMyString("my dynamic value");

并在newFragment.java我有:

public void setMyString(String s)
{
 TextView tv = (TextView) getActivity().findViewById(R.id.myobject);
 tv.setText(s);
}

还有我改变后的代码如下:

Bundle b = new Bundle();
b.putString("text", "my dynamic Text");
DetailFragment newFragment = new DetailFragment();
transaction.replace(R.id.mylist, newFragment);
transaction.addToBackStack(null);
transaction.commit();

我的片段onCreateView看起来像这样:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{
   View v = inflater.inflate(R.layout.mylayout, container, false);
   TextView t = (TextView) v.findViewById(R.id.texttobereplaced);
   t.setText(savedInstanceState.getString("text");
}
提问于
用户回答回答于

你的Fragment没有依附于Activity但是,这也意味你的布局还没有膨胀。这里最好的解决方案是添加String值作为Fragment通过Fragment.setArguments(Bundle)方法。

用户回答回答于

一定要调用getActivity()内或后onAttach(),就像以前一样,它会回来的。

扫码关注云+社区