डेवलपर कंसोल त्रुटि रिपोर्ट में कभी-कभी मुझे NPE समस्या वाली रिपोर्ट दिखाई देती है। मुझे समझ नहीं आ रहा है कि मेरे कोड में क्या गलत है। एमुलेटर पर और मेरा डिवाइस एप्लिकेशन बिना संदंश के अच्छा काम करता है, हालांकि गेटअक्टिविटी () विधि कहा जाता है, तो कुछ उपयोगकर्ताओं को खंड वर्ग में NullPointerException मिलती है।
गतिविधि
pulic class MyActivity extends FragmentActivity{
private ViewPager pager;
private TitlePageIndicator indicator;
private TabsAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
pager = (ViewPager) findViewById(R.id.pager);
indicator = (TitlePageIndicator) findViewById(R.id.indicator);
adapter = new TabsAdapter(getSupportFragmentManager(), false);
adapter.addFragment(new FirstFragment());
adapter.addFragment(new SecondFragment());
indicator.notifyDataSetChanged();
adapter.notifyDataSetChanged();
// push first task
FirstTask firstTask = new FirstTask(MyActivity.this);
// set first fragment as listener
firstTask.setTaskListener((TaskListener) adapter.getItem(0));
firstTask.execute();
}
indicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
Fragment currentFragment = adapter.getItem(position);
((Taskable) currentFragment).executeTask();
}
@Override
public void onPageScrolled(int i, float v, int i1) {}
@Override
public void onPageScrollStateChanged(int i) {}
});
}
AsyncTask क्लास
public class FirstTask extends AsyncTask{
private TaskListener taskListener;
...
@Override
protected void onPostExecute(T result) {
...
taskListener.onTaskComplete(result);
}
}
फ्रैगमेंट क्लास
public class FirstFragment extends Fragment immplements Taskable, TaskListener{
public FirstFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.first_view, container, false);
}
@Override
public void executeTask() {
FirstTask firstTask = new FirstTask(MyActivity.this);
firstTask.setTaskListener(this);
firstTask.execute();
}
@Override
public void onTaskComplete(T result) {
// NPE is here
Resources res = getActivity().getResources();
...
}
}
हो सकता है कि यह त्रुटि तब होती है जब अनुप्रयोग पृष्ठभूमि से फिर से शुरू होता है। इस मामले में मुझे इस स्थिति को कैसे ठीक से संभालना चाहिए?