通过Bundles将参数传递给片段

时间:2014-10-20 10:49:46

标签: android android-fragments

Bundle params=new Bundle();
params.putBoolean("isNew", true);
getFragmentManager().beginTransaction()
        .replace(R.id.main, Fragment
        .instantiate(LandingScreen.this, "com.fragments.FragmentOne",params)).commit()

现在这是Fragment1

public class FragmentOne extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        ViewGroup root = (ViewGroup) inflater.inflate(R.layout.fragment_one, null);
        return root;
    }
   }

我在哪里收到Bundle params,我在创建这个Fragment时发送了?

亲切的问候

3 个答案:

答案 0 :(得分:2)

您将在片段Bundle

中收到onCreate(....)
@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
     super.onCreate(savedInstanceState);
     boolean isNew=this.getArguments().getBoolean("isNew");
 }

答案 1 :(得分:1)

您可以获取Bundle对象可作为参数

访问的数据
  1. onCreate()
  2. onCreateView()
  3. onActivityCreated()
  4. 使用onCreate()

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_layout);
        String myData=this.getArguments().getString("myData");
    }
    

    使用onCreateView()

    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)     {
        String myData=this.getArguments().getString("myData");
        return inflater.inflate(R.layout.example_fragment, container, false);
    }
    

    使用onActivityCreated()

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        String myData=this.getArguments().getString("myData");    
    }
    

答案 2 :(得分:0)

大部分时间,您都会在getArguments()中使用onCreate()来调用Fragment,在您实例化onCreateView()之后但onActivityCreated()和{{之前1}}会被调用。但是,as per Android documentation,如果您在创建Activity时从Activity调用此内容,则无法保证onCreate()之前已完成初始化{{1}}被称为:

  

请注意,在片段活动仍处于创建过程中时,可以调用此方法。因此,您不能依赖此时正在初始化的活动的内容视图层次结构等内容。如果您想在创建活动本身后继续工作,请参阅onActivityCreated(Bundle)。

有关更多信息,请查看有关活动和片段的博文:http://www.zerotohired.com/2015/02/passing-data-between-activities-and-fragments-in-android