Android bundle中的Null值=此.getArguments()方法

Android bundle中的Null值=此.getArguments()方法,android,android-fragments,Android,Android Fragments,我想将一些数据从主活动发送到它的子片段类。我使用了下面的代码,但仍然在getarguments()方法中获得null值。我也调试过,但运气不好 setupToolbar(); setupViewPager(); setprofiledata(); setupCollapsingToolbar(); // setupDrawer(); private void setprofiledata() { String tag_string_req =

我想将一些数据从主活动发送到它的子片段类。我使用了下面的代码,但仍然在
getarguments()
方法中获得
null
值。我也调试过,但运气不好

    setupToolbar();
    setupViewPager();
    setprofiledata();
    setupCollapsingToolbar();
    // setupDrawer();


private void setprofiledata() {
    String tag_string_req = "req_profile";

    pDialog.setMessage("Logging in ...");
    showDialog();

    StringRequest strReq = new StringRequest(Request.Method.POST,
            AppConfig.URL_LOGIN, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            Log.d("TAG", "Login Response: " + response.toString());
            hideDialog();
            Toast.makeText(Profile.this,"Login done",Toast.LENGTH_LONG).show();

            try {
                JSONObject jObj = new JSONObject(response);
                // boolean error = jObj.getBoolean("error");

                // Check for error node in json
            /*    if (!error) {*/
                // user successfully logged in
                // Create login session


                // Now store the user in SQLite
                //String uid = jObj.getString("uid");

                JSONObject user = jObj.getJSONObject("param");

                JSONObject jsonObject = user.getJSONObject("details");

                Log.d("Personal info",jsonObject.toString());

                String name = jsonObject.getString("Name");
                String email = jsonObject.getString("Email");
                String Contact = jsonObject.getString("Contact No.");
                String gender = jsonObject.getString("Gender");
                String Country =jsonObject.getString("Country");
                String City = jsonObject.getString("City");
                String State = jsonObject.getString("State");
                String Zip = jsonObject.getString("Zip");
                String Birth_Date = jsonObject.getString("Birth Date");
                String Status = jsonObject.getString("Status");
                String Connects_in= jsonObject.getString("Connects in");


                Bundle bundle = new Bundle();
                bundle.putString("name", name);
      // set Fragmentclass Arguments
                TabFragment tab1 = new TabFragment();
                tab1.setArguments(bundle);


            } catch (JSONException e) {
                // JSON error
                e.printStackTrace();
                Toast.makeText(getApplicationContext(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show();
            }

        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e("TAG", "Login Error: " + error.getMessage());
            Toast.makeText(getApplicationContext(),
                    error.getMessage(), Toast.LENGTH_LONG).show();
            hideDialog();
        }
    }) {

        @Override
        protected Map<String, String> getParams() {
            // Posting parameters to login url
            Map<String, String> params = new HashMap<String, String>();
            params.put("visitor_id", "14");
            params.put("request","Dashboard_VisitorInfo");

            return params;
        }

    };

    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}

 /*private void setupDrawer() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

}*/

private void setupCollapsingToolbar() {
    final CollapsingToolbarLayout collapsingToolbar = (CollapsingToolbarLayout) findViewById(
            R.id.collapse_toolbar);

    collapsingToolbar.setTitleEnabled(false);
}

private void setupViewPager() {
  //  final ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
   viewPager = (ViewPager) findViewById(R.id.viewpager);
    setupViewPager(viewPager);

    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);
}

private void setupToolbar() {
    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setTitle("TabbedCoordinatorLayout");
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFrag(new TabFragment(), "Personal");
    adapter.addFrag(new Tab1(), "Commnication");
    adapter.addFrag(new Tab2(), "Notes");

    viewPager.setAdapter(adapter);
}

static class ViewPagerAdapter extends FragmentPagerAdapter {

    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);

    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }

    public void addFrag(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
}  

您在网络响应之后传递参数,但在此之前初始化ViewPager适配器。因此,您在片段中得到null

您可以做的只是从viewPagerAdapter获取片段对象,然后将
参数设置为它


使用查看页面的
getItem(int-position)
方法,它将返回片段对象,然后为其分配
参数。

您理解代码吗?仅使用在
setupViewPager
中创建的片段。他们没有争论
tab1
完全不使用欢迎使用堆栈溢出,最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,则仅链接的答案可能无效
    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment, container, false);
    Bundle bundle = this.getArguments();
    nameedit = (EditText)view.findViewById(R.id.editnameid);
    if (bundle != null){
        String name=bundle.getString("name");

        nameedit.setText(name);
    }