我尝试将String arr发送到活动的片段

时间:2017-11-05 14:29:49

标签: android android-activity fragment arr

我尝试将String arr发送到 Fragment Activity 。 因为我必须通过listViewfragment中显示String arr。 但仍有空exception错误.. 我多次搜索以解决此错误,但仍然存在相同的错误。 我真的不知道该怎么办。请给我一些解决方案。

活动

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tabmenu_activity);
    final Toolbar toolbar = (android.support.v7.widget.Toolbar) this.findViewById(R.id.toolbar);
    toolbar.setTitleTextColor(Color.parseColor("#000000"));

    backPressCloseHandle = new BackPressCloseHandler(this);

    setting = getSharedPreferences("setting", MODE_PRIVATE);
    editor= setting.edit();
    loginid = setting.getString("Id", "");

    Driver.getInstance().setloginid(setting.getString("Id", ""));

    ApiRequester.getInstance().getDriver(Driver.getInstance().getLoginid(), new ApiRequester.UserCallback<Driver>() {
        @Override
        public void onSuccess(Driver result) {
            toolbar.setTitle(result.getname());
        }
        @Override
        public void onFail() {
        }
    });

    ApiRequester.getInstance().getList(new ApiRequester.UserCallback<List<Case_List>>() {
        @Override
        public void onSuccess(List<Case_List> result) {
                if(result==null)
                {
                    Toast.makeText(TabMenuActivity.this, "정보가 존재하지 않습니다.", Toast.LENGTH_SHORT).show();
                }
                else
                {
                    int size = result.size();
                    list_arr = new String[size];
                    int count = 0;

                    for(Case_List list : result)
                    {
                        list_arr[count] = list.gethabbitname();
                        count++;
                    }
                            for(int i=0; i<list_arr.length; i++)
                                {
                                           System.out.println(i+"number"+list_arr[i]);
                                }
                    Bundle bundle = new Bundle();
                    bundle.putStringArray("list_arr", list_arr);
                    // set Fragmentclass Arguments
                    Frag_ListActivity fragobj = new Frag_ListActivity();
                    fragobj.setArguments(bundle);
                }
        }
        @Override
        public void onFail() {
        }
    });

片段

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

    View view = inflater.inflate(R.layout.activity_frag_list, container, false);
    mRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerview);
    mRecyclerView.setHasFixedSize(true);
    mLayoutManager = new LinearLayoutManager(getActivity());
    mRecyclerView.setLayoutManager(mLayoutManager);

    String[] list_arr = getArguments().getStringArray("list_arr");// error is here.

    for(int i=0; i<list_arr.length; i++)
    {
        System.out.println(list_arr[i]);
    }


    return view;


}                             
  

java.lang.NullPointerException:尝试调用虚方法   java.lang.String [] android.os.Bundle.getStringArray(java.lang.String)'   在null。

我该如何解决这个问题?我没有足够的时间:^(

2 个答案:

答案 0 :(得分:0)

仅当结果不为null时才传递数组:如果它具有空值,则表示尚未添加默认值:

我认为应该是这样的:

    ApiRequester.getInstance().getList(new ApiRequester.UserCallback<List<Case_List>>() {
    @Override
    public void onSuccess(List<Case_List> result) {
            if(result==null)
            {
                Toast.makeText(TabMenuActivity.this, "정보가 존재하지 않습니다.", Toast.LENGTH_SHORT).show();
            }
            else
            {
                int size = result.size();
                list_arr = new String[size];
                int count = 0;

                for(Case_List list : result)
                {
                    list_arr[count] = list.gethabbitname();
                    count++;
                }
                        for(int i=0; i<list_arr.length; i++)
                            {
                                       System.out.println(i+"number"+list_arr[i]);
                            }

            }

                Bundle bundle = new Bundle();
                bundle.putStringArray("list_arr", list_arr);
                // set Fragmentclass Arguments
                Frag_ListActivity fragobj = new Frag_ListActivity();
                fragobj.setArguments(bundle);
    }
    @Override
    public void onFail() {
    }
});

答案 1 :(得分:0)

这里的一个好习惯是使用接口在活动及其片段之间进行通信。

在Activity类中创建一个接口并将数据作为参数传递。 让您的片段类实现它,并在方法实现中使用接收到的数据开展业务。