有人可以解釋我爲什麼有時會發生這種異常?爲什麼一個班級成員在Android中失去了價值?
異常顯示java.lang.NullPointerException:嘗試上的空對象引用
ChannelEPGF $ myPagerAdapter.getItem(ChannelEPGF.java:82)調用虛擬方法 '長java.util.Date.getTime()'(找到「//這是82行」在我的代碼文本)
這裏是我的代碼:
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.mp.myapp.DataTypes.ChannelEPG;
import java.util.Date;
public class ChannelEPGF extends Fragment implements ChannelEPG.fragmentCommunicator {
private Date selectedDate;
private String channelId;
private String channelTitle;
private ViewPager pager;
private boolean isTunable;
@Override
public void sendMessage(String name, Object msg) {
if (msg != null) {
ChannelEPG item = (ChannelEPG) msg;
channelId = item.GetId();
channelTitle = item.GetTitle();
isTunable = item.GetTunable();
} else {
pager.getAdapter().notifyDataSetChanged();
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.activity_channel_epgf, container, false);
pager = (ViewPager) v.findViewById(R.id.viewPager);
if (pager != null) {
pager.setAdapter(new myPagerAdapter(getChildFragmentManager()));
pager.setCurrentItem(1);
}
return v;
}
private class myPagerAdapter extends FragmentPagerAdapter {
public myPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int pos) {
if (pos == 0) {
selectedDate = new Date();
selectedDate.setTime(selectedDate.getTime() - 24 * 3600 * 1000);
return ActivityChannelEPG.newInstance(selectedDate, channelId, channelTitle, isTunable);
} else if (pos == 1) {
selectedDate = new Date();
return ActivityChannelEPG.newInstance(selectedDate, channelId, channelTitle, isTunable);
} else if (pos == 2) {
selectedDate = new Date();
selectedDate.setTime(selectedDate.getTime() + 24 * 3600 * 1000);
return ActivityChannelEPG.newInstance(selectedDate, channelId, channelTitle, isTunable);
} else {
selectedDate.setTime(selectedDate.getTime() + 24 * 3600 * 1000); //THIS IS THE 82. rows
return ActivityChannelEPG.newInstance(selectedDate, channelId, channelTitle, isTunable);
}
}
@Override
public int getCount() {
return 8;
}
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
}
'} else { selectedDate.setTime(selectedDate.getTime()+ 24 * 3600 * 1000 );'selectedDate在這裏爲空 –
你忘記了在你的else語句中啓動selectedDate –
它在pos == 0,1,2時啓動。該代碼99.999%的作品。我只通過firebase/crashreporting得到了這個異常。 – RuntimeError