如何将字符串从活动传递到片段?

时间:2017-01-20 12:38:57

标签: android

活动A

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ActivityA);

    Bundle b = new Bundle();
    b.putString("mobile", "123456789");
    FragmentA fragmentA = new FragmentA ();
    fragmentA .setArguments(b);}

FragmentA

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.fragment_fragmentA, container, false);

        String txtMobile = getArguments().getString("mobile");
        Log.i("mobile2",txtMobile);
        mobile.setText(txtMobile);}

我已尝试过以上解决方案,但显示错误 尝试在空对象引用上调用虚方法'java.lang.String android.os.Bundle.getString(java.lang.String)'

6 个答案:

答案 0 :(得分:0)

像这样创建你的片段

public static MyFragment newInstance(String string) {

    Bundle args = new Bundle();
    args.putString("string",string);
    MyFragment fragment = new MyFragment();
    fragment.setArguments(args);
    return fragment;
}

然后在Fragment onCreate中使用getArguments()来拉取该字符串。别忘了检查getArguments()是否为空。

答案 1 :(得分:0)

尝试使用默认值构造函数获取片段的onCreate方法中的参数:

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    String txtMobile = getArguments().getString("mobile", "");
}

并确保在片段中设置参数后提交片段事务。 :)

答案 2 :(得分:0)

首先检查您的参数是否为空。 例如  @覆盖 public View onCreateView(LayoutInflater inflater,ViewGroup容器,Bundle savedInstanceState){

View v = inflater.inflate(R.layout.fragment_fragmentA, container, false);

如果(getArguments()!= NULL){

    String txtMobile = getArguments().getString("mobile");
    Log.i("mobile2",txtMobile);
    mobile.setText(txtMobile);

} }

答案 3 :(得分:0)

试试这个:

  @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        if (savedInstanceState != null){            
            String txtMobile = savedInstanceState.getString("mobile");                
        }
    }

答案 4 :(得分:0)

可能是关于你在课堂上添加片段的方式:

faceCount[0].Count

你能提供更多关于如何添加它的数据吗?

答案 5 :(得分:0)

您可以使用inteface将数据从活动传递到片段

在您的活动中

public interface FragmentRefreshListener {
    void onRefresh(String mydata);
}

public FragmentRefreshListener fragmentRefreshListener;

public void setFragmentRefreshListener(FragmentRefreshListener fragmentRefreshListener) {
    this.fragmentRefreshListener = fragmentRefreshListener;
}

public FragmentRefreshListener getFragmentRefreshListener() {
    return fragmentRefreshListener;
}

然后在你的片段里面添加以下代码

((MainActivity) getActivity()).setFragmentRefreshListener(new MainActivity.FragmentRefreshListener() {

        @Override
        public void onRefresh(String mydata) {

      // write your logic here

        }
    });

在您的活动中使用以下内容将数据从活动传递到片段

getFragmentRefreshListener().onRefresh("dummy text");