有人可以解释我为什么有时会发生这种异常?为什么一个班级成员在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