我尝试将String arr
发送到 Fragment
的 Activity
。
因为我必须通过listView
在fragment
中显示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。
我该如何解决这个问题?我没有足够的时间:^(
答案 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类中创建一个接口并将数据作为参数传递。 让您的片段类实现它,并在方法实现中使用接收到的数据开展业务。