使用Null Object Reference粘贴在Android.os.Bundle上

时间:2016-04-19 03:04:45

标签: java android

我不知道为什么会发生这种错误。我已经检查了链接到这个的所有代码,但仍然没有给出任何解决方案。

IDE只是像这样的gimme错误:

  

java.lang.NullPointerException:尝试调用虚方法' int android.os.Bundle.getInt(java.lang.String)'在null对象引用上                                                                      在com.gook.rebill.fragment.HomeFragment.onAttach(HomeFragment.java:74)

我知道它是一个空对象引用,但我仍然无法找到错误的原因。

请帮帮我。

这是我的代码

 public void onSectionAttached(int number) {
    switch (number) {
        case 1:
            mTitle = getString(R.string.title_section1);
            break;
        case 2:
            mTitle = getString(R.string.title_section2);
            break;
        case 3:
            mTitle = getString(R.string.title_section3);
            break;
    }
}

这里我在HomeActivity中使用片段代码:

var myDate="18/04/2016";
myDate=myDate.split("/");
var newDate=myDate[1]+"/"+myDate[0]+"/"+myDate[2];
var ts = new Date(newDate).getTime();  //timestamp in milliseconds

4 个答案:

答案 0 :(得分:1)

我认为getArguments()会返回null 你可以看到这些例子:
Android Fragment getArguments() returns null
Fragment getArguments() returns null

答案 1 :(得分:0)

从您附加的代码中,它似乎就在这里。

        hp = new URL(
                getString(R.string.liveurl) + "foodcategory.php");

问题是 - 当你试图访问string.liveurl时,什么是R. Can R为null?这似乎是可能的问题。你能用调试器检查R是什么吗?

答案 2 :(得分:0)

你应该这样做:

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    try {
        mCallbacks = (CategorySelectionCallbacks) activity;
    } catch (ClassCastException e) {
        throw new ClassCastException("Activity must implement CategorySelectionCallbacks.");
    }
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_home, container, false);
    categoryListView = (ListView) rootView.findViewById(R.id.categoryListView);
    return rootView;
}

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

    ((HomeActivity) getActivity()).onSectionAttached(getArguments().getInt(ARG_SECTION_NUMBER));
}

修改1:

您应该通过以下方式替换HomeFragment:

HomeFragment homeFragment = HomeFragment.newInstance(my_int); 
_viewPagerAdapter.addFragments(homeFragment,"Home");

原因:您只需使用默认构造函数创建{strong>实例 Fragment,而使用Arguments创建实例

希望这会对你有所帮助。

答案 3 :(得分:0)

试试这个 -

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);

    try {
        mCallbacks = (CategorySelectionCallbacks) activity;
    } catch (ClassCastException e) {
        throw new ClassCastException("Activity must implement CategorySelectionCallbacks.");
    }
}


    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {

           ((HomeActivity) getActivity()).onSectionAttached(getArguments().getInt(ARG_SECTION_NUMBER));
}