在安卓系统中从活动中发送数据到片段

我有两个类。第一个是活动,第二个是一个片段,我有一些EditText。在活动中,我有一个带有async-task的子类,在方法doInBackground中我得到了一些结果,我把它保存在变量中。我怎样才能把这个变量从子类"我的活动"发送到这个片段?

解决办法

从活动中,你发送数据的意图是。

Bundle bundle = new Bundle();
bundle.putString("edttext", "From Activity");
// set Fragmentclass Arguments
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);

并在Fragment onCreateView方法中。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    String strtext = getArguments().getString("edttext");    
    return inflater.inflate(R.layout.fragment, container, false);
}
评论(30)

我在这里找到了很多答案@ stackoverflow.com,但这肯定是正确的答案。

"在android中从活动中发送数据到片段"。

活动:

        Bundle bundle = new Bundle();
        String myMessage = "Stackoverflow is cool!";
        bundle.putString("message", myMessage );
        FragmentClass fragInfo = new FragmentClass();
        fragInfo.setArguments(bundle);
        transaction.replace(R.id.fragment_single, fragInfo);
        transaction.commit();

片段:

读取片段中的值

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        Bundle bundle = this.getArguments();
        String myValue = bundle.getString("message");
        ...
        ...
        ...
        }

或只是

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        String myValue = this.getArguments().getString("message");
        ...
        ...
        ...
        }
评论(3)

如果你在异步任务中传递一个对(具体的子类)片段的引用,你就可以直接访问该片段。

将片段引用传入异步任务的一些方法。

  • 如果你的异步任务是一个成熟的类(class FooTask extends AsyncTask),那么将你的片段传入构造函数。
  • 如果你的异步任务是一个内类,只需在定义异步任务的范围内声明一个最终的Fragment变量,或者作为外类的一个字段。 你就可以从内层类中访问它。
评论(1)