我想使用接口将数据从活动传递到片段。请查看下面的代码片段:
界面:
public interface FragmentCommunicator {
public void passData(String name);
}
主要活动:
public class MainActivity extends AppCompatActivity{
FragmentCommunicator fragmentCommunicator;
private Fragment fragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b = (Button) findViewById(R.id.button);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fragment= new Fragment();
fragmentCommunicator = (FragmentCommunicator) getApplication();
fragmentCommunicator.passData("hello");
getSupportFragmentManager().beginTransaction().replace(R.id.container ,fragment).commit();
}
});
}
}
分段:
public class Fragment extends android.support.v4.app.Fragment implements FragmentCommunicator {
FragmentCommunicator communicator;
Context c;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, null);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.c = context;
}
@Override
public void passData(String name) {
Toast.makeText(c, name, Toast.LENGTH_SHORT).show();
}
}
我只想在单击按钮(或其他事件)启动片段时传递一些字符串,当片段启动时,它应该显示包含该字符串的吐司……
请帮助任何帮助将不胜感激。
原文由 Akshay Sood 发布,翻译遵循 CC BY-SA 4.0 许可协议
把这行代码写在onCreate方法之后。
像这样的东西
然后将这行代码写入片段的 onCreateView() 中。像这样的东西
注意:无需在片段中实现 FragmentCommunicator 接口。希望它有效。这个对我有用。我测试过